前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >闲聊僵尸进程

闲聊僵尸进程

作者头像
SRE运维实践
发布2019-07-08 14:48:41
1.8K0
发布2019-07-08 14:48:41
举报
文章被收录于专栏:SRE运维实践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的进程接手,回收。

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SRE运维实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档