在前一篇文章里,提到了 Java 程序容器产生大量僵尸进程的问题。今天又碰到了,不过是另一种情况。
产生僵尸进程的也是 bash 脚本,不过这个脚本是在 K8S readinessProbe 和 livenessProbe 里执行的,并不是 java 程序自己执行的。
先看一些故障图:
可以看到有很多 timeout
进程执行结束后没有被清理。
而 readinessProbe 和 livenessProbe 是这样的:
|
|
在经过一系列排查之后发现,就是和镜像的 ENTRYPOINT
有关系。
基础镜像是 openjdk:8-alpine
,而原来的是这样的:
|
|
改成:
|
|
tini 可以避免容器产生僵尸进程。
PS. 目前为止僵尸进程的问题常出现在 alpine
镜像上。
评论