Loading

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

总结

  1. 日志要配置好,避免产生大量无效日志,特别是项目中存在定期请求的,比如大屏的实时数据定时刷新,日志不做好,日积月累就会产生大量垃圾日志,影响正常排查问题,还会造成空间占用过高,导致意料之外的问题发生。
  2. 排查问题多思考本质,精准用药,直达病灶,药到病除。😃
posted @ 2022-11-08 10:41  shih945  阅读(707)  评论(0编辑  收藏  举报