docker运行 [4256] INTERNAL ERROR
现象
突然有反馈说线上部分接口加载不出来
登上系统查看,确实有几个接口状态码是200,就是没数据,控制台异常的接口报错显示
net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
错误代码搜索之,说是编码模块不完整,返回浏览器的流不完整,有几个可能的原因
1、丢包
2、响应数据被限制
3、读取流异常终止
具体可以看下这里。
但之前就没有报这个错,突然出现这种现象,没那么简单。
排查
系统是docker部署,想查看容器日志,docker-compose命令一执行,给我一个
[4256] INTERNAL ERROR: cannot create temporary directory!
看字面意思是无法创建临时目录,df -h
赶紧看一下磁盘空间情况,/dev/vda1 已经占用满了,磁盘空间不够了。
看了看docker镜像,有一些空的镜像和低版本的系统镜像没有使用还占用着空间,删除之,磁盘占用来到了94%
[root@localhost bim-compose]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 1.6M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/vda1 40G 35G 2.6G 94% /
tmpfs 3.2G 0 3.2G 0% /run/user/0
...
此时已经反馈说异常接口已经恢复可用了,但是感觉还没完,
解决
du -h /var/lib/docker/overlay2 --max-depth=1
命令执行看下docker目录下这些镜像和容器产生的目录有没有异常大小的,发现存在两个相比其它的占用3G和41G的目录
[root@localhost bim-compose]# sudo du -h /var/lib/docker/overlay2 --max-depth=1 |grep G
2.7G /var/lib/docker/overlay2/81c504033a82a6a5a59f7d0abcfaa51287daecc481e117c27bb8549329f78749
41G /var/lib/docker/overlay2/6f3f315660418be9bb7c2dd9e3107efc04dc34d171c7246e983bcccf4d5dfe12
50G /var/lib/docker/overlay2
再通过docker目录名查找对应容器名
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep 目录名
输出依次为,进程pid、容器ID、容器名、存储work路径,即可确定是哪个容器。
[root@localhost bim-compose]# docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep 6f3f315660418be9bb7c2dd9e3107efc04dc34d171c7246e983bcccf4d5dfe12
1887, bf4028f3e909203c956e88406ebd47b16f79e5a346c4e0f806b9943db29e5b85, /bim-gateway, /var/lib/docker/overlay2/6f3f315660418be9bb7c2dd9e3107efc04dc34d171c7246e983bcccf4d5dfe12/work
[root@localhost bim-compose]# docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep 81c504033a82a6a5a59f7d0abcfaa51287daecc481e117c27bb8549329f78749
20217, 933d1c1ce6b2e62f0dbba259ede427d0e1a8d95b02c9e4c3dacd22c0502aee8e, /nacos-standalone, /var/lib/docker/overlay2/81c504033a82a6a5a59f7d0abcfaa51287daecc481e117c27bb8549329f78749/work
发现一个是网关服务,因为日志没处理好,产生了大量日志,导致容器占用空间特别大,删除后重启之,磁盘空间占用降低到39%。之后再修改下日志配置避免产生大量无效日志。
[root@localhost bim-compose]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 1.6M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/vda1 40G 15G 23G 39% /
tmpfs 3.2G 0 3.2G 0% /run/user/0
总结
- 日志要配置好,避免产生大量无效日志,特别是项目中存在定期请求的,比如大屏的实时数据定时刷新,日志不做好,日积月累就会产生大量垃圾日志,影响正常排查问题,还会造成空间占用过高,导致意料之外的问题发生。
- 排查问题多思考本质,精准用药,直达病灶,药到病除。😃
作者:shih945
出处:https://www.cnblogs.com/shih945/p/16868869.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
标签:
Docker
, docker-compose
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)