【运维案例】unpigz进程不自动消亡问题

产品: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里,每天运行一次即可

2 Likes

好贴必赞!!

收下膝盖