产品:openEuler
版本:openEuler20.03 LTS SP3
docker版本:20.10.12(非openEuler社区提供)
分类:云原生/容器
来源:现网
问题描述
在openEuler主机上执行容器:如docker run -it --rm nginx:latest sh -x -c ‘test’,发现很多容器运行的时候会生成unpigz 进程且不会消亡(一晚上增长170个),太多会占用句柄数,导致系统无法执行其他操作
问题根因
该问题为上游社区的docker的问题,未完全修复,但影响可控。相关issue:Dangling Decompressor Processes (xz, pigz) · Issue #38608 · moby/moby · GitHub
openEuler社区的docker(18.09版本)已合入相关patch,可以减少该问题造成的影响,patch:patch/0210-docker-fix-dangling-unpigz.patch · src-openEuler/docker - Gitee.com
解决方案
可以根据上游社区提供的的方法,定期清理unpigz进程来规避;
规避方法:
pgrep -xf ‘/usr/bin/unpigz -d -c’ |
sed -e ‘s#.*#/proc/&/stat#’ |
xargs awk ‘{print $22 " " $1}’ | sort -rn |
sed -e ‘1,10d;s/[^ ]* //’ |
xargs --no-run-if-empty kill
把上述脚本写入cronjob里,每天运行一次即可