现象
突然有反馈说线上部分接口加载不出来
登上系统查看,确实有几个接口状态码是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