hello云胜

技术与生活

0%

fluent-bit-core 现大量僵尸进程

现象

使用top命令可以看到红框的74个僵尸进程。

![image-20230912093342597](D:\github\docs\云原生\kubesphere\fluent-bit-core 现大量僵尸进程.assets\image-20230912093342597.png)

处理

想要看详细的都有哪些僵尸进程,方法也比较多

  1. top 按状态S排序

top 后按 f键进到过滤面板。 选到S 再按s键确认 按这个排序。然后退出过滤面板

![image-20230912093647635](D:\github\docs\云原生\kubesphere\fluent-bit-core 现大量僵尸进程.assets\image-20230912093647635.png)

就可以看到僵尸进程都排到前面了

![image-20230912093808385](D:\github\docs\云原生\kubesphere\fluent-bit-core 现大量僵尸进程.assets\image-20230912093808385.png)

  1. ps grep Z状态的进程
1
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'

-A 参数列出所有进程

-o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数

因为状态为 z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程

![image-20230911180444081](D:\github\docs\云原生\kubesphere\fluent-bit-core 现大量僵尸进程.assets\image-20230911180444081.png)

3, ps grep defunct关键字

1
ps -ef | grep defunct

因为僵尸进程的关键字是defunct

父进程是200441这个

![image-20230911180543277](D:\github\docs\云原生\kubesphere\fluent-bit-core 现大量僵尸进程.assets\image-20230911180543277.png)

就是fluent-bit进程

杀死僵尸进程的方法就是,杀死其父进程

所以,一定要确认从业务层面上,父进程是可以杀死重启的。

我这个是k8s集群以Daemonset 运行的fluent-bit

所以我可以果断重启

杀死父进程

1
for i in `kubectl -n kubesphere-logging-system get pod  | grep fluent-bit | awk '{print $1}'`;do kubectl -n kubesphere-logging-system delete pod $i; done;