专栏首页SRE运维实践闲聊僵尸进程

闲聊僵尸进程

僵尸进程

记得好像写过相关僵尸进程的东西,稍微再写一点,因为总是有人说僵尸进程的存在会导致机器的load值变高,不知道哪里看到的谬论。

服务器的load值变高,只有两种情况,一个是进程的数量太多,而且进程的状态只有三种,一种是正在运行的,一种是sleeping的,一种是等待io的sleeping的,cpu只调度两个队列,从而僵尸进程都排不上号,僵尸进程的状态为Z。

进程的调度如下所示:

从以上来看,僵尸进程的存在并不会导致服务器的load值变高,而且,僵尸进程的存在不会占用内存,不会占用cpu时间,仅仅占用一个进程的数据结构,也就是进程号是占用的,从而最坏的结果就是导致服务器上不能创建新的进程。

在使用命令查看的时候,只要使用ps -ef|grep defunct就可以了,在top中看的时候,可以看到占用的内存为0,而且cpu时间会保持不变,也就是。。永远没有机会在cpu上运行。

对于服务器来说,创建进程的数量是有上限的,从而会导致无法创建新的进程。

一般的服务器上总有那么几个进程是僵尸进程,不用慌,慌也没用。

在使用容器的时候,产生僵尸进程的概率大大增加,为啥呢?

在使用容器的时候,通过entrypoint运行一个容器,然后在容器里面看,是pid为1,然而并不是真正的init进程,emmm,7.x的是systemd进程,只有pid为1能回收资源,当然这句话不是很对,父进程也是具有一定的回收能力的,但是例如孤儿进程啥的,就会被pid为1的进程接手,回收。

僵尸进程没有想象中的那么可怕,一个服务器上几万个僵尸进程,也就那样,重启下容器就好了。。。重启试试。

重点在于找到僵尸进程产生的程序,然后修改程序,而不是仅仅重启,心情不好,睡一觉就好了?骗鬼呢。

本文分享自微信公众号 - SRE运维实践(gh_319dd73ec076),作者:NAN

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 容器OOM问题排查思路

    外界的刁难,挑战。。。其实并不是最难的,最难的总是内部难以安抚,OOM。。。内存泄漏,OOM killer了解一下。。。攘外必先安内。。。我可能要死在内...

    SRE运维实践
  • 容器。。。杀还是不杀

    容器总是有启动脚本,有的时候脚本有bug,从而造成容器的死循环。。。杀还是不杀。。。

    SRE运维实践
  • 磁盘使用了偏高问题排查思路

    双十一即将来临,做电商的大佬们都准备好了各种应急预案了么。。。例如服务降级,流量控制,扩容方案。。。又快到了一年一度的剁手大会了,不过这个时候,应该是运维最繁...

    SRE运维实践
  • 深度好文|面试官:进程和线程,我只问这19个问题

    标准定义:进程是一个具有一定独立功能的程序在一个数据集合上依次动态执行的过程。进程是一个正在执行程序的实例,包括程序计数器、寄存器和程序变量的当前值。

    公众号C语言与CPP编程
  • Linux并发(进程的生老病死)

    Linux中的进程有生老病死,就跟人一样,我们尤其关注其死,因为进程死后如果不处理,它会变成僵尸!

    用户2617681
  • 操作系统复习笔记——第三章 进程

    进程可看做是正在执行的程序。进程需要一定的资源(如CPU时间、内存、文件和I/O设备)来完成其任务。这些资源在创建进程或执行进程时被分配。

    种花家的奋斗兔
  • 孤儿进程和僵尸进程

    我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进...

    武军超
  • Linux 僵尸进程产生原因及解决方法

    Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态。例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样...

    砸漏
  • [linux] C语言Linux系统编程进程基本概念

    1.如果说文件是unix系统最重要的抽象概念,那么进程仅次于文件。进程是执行中的目标代码:活动的、生存的、运行的程序。

    陶士涵
  • linux下如何创建守护进程的步骤

    这两天学习了linux 守护进程这个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记。

    砸漏

扫码关注云+社区

领取腾讯云代金券