「杀不掉的」僵尸(zombie)进程
「杀不掉的」僵尸(zombie)进程
淘仇恕(张云开)
感谢淘宝内核组的帮助,Google Drive原文
Linux的进程,有以下几种状态(摘自本文):
State |
Description |
D |
Uninterruptible sleep (usually IO) |
R |
Running or runnable (on run queue) |
S |
Interruptible sleep (waiting for an event to complete) |
T |
Stopped, either by a job control signal or because it is being traced. |
W |
Paging (not valid since the 2.6.xx kernel) |
X |
Dead (should never be seen) |
Z |
Defunct ("zombie") process, terminated but not reaped by its parent. |
当一个进程处于Z状态,我们称之为zombie进程,如下所示:
#top -b -p 56249 |
正常情况下,处于zombie状态的进程,会很快地被它的父进程回收,以致于我们根本不会注意到zombie进程的存在。可在实践过程中,却有一些无法使用kill -9命令杀掉的zombie进程,这常常令我们束手无策。
如果某个进程一直处于zombie状态,可能会带来一些严重的问题,例如,假设这个进程没有正确地close掉socket,就会导致这些socket处于close_wait状态,这些socket将会占用系统的ip/port资源,将导致其他程序无法创建特定socket。
当出现「杀不掉」的zombie进程,我们常常归咎于kernel的bug,不了了之,但其实还有一种情况常常被忽略。让我们看看上面的这个zombie进程内部,是否还有其他线程(使用top命令的-H参数):
#top -b -H -p 56249 |
由上图可见,虽然[ET_NET 0](pid=56249)进程处于zombie状态,但它其实是一个多线程的程序,该程序中的其他线程,如[ET_AIO 0](pid=56337)等,处于D(Uninterruptible sleep)状态,因为D状态的进程(在Linux中,线程只是特殊的进程)无法被中断,因此kill -9无法杀掉D状态的进程。也正因为这些D状态的进程的存在,导致父进程无法顺利的回收它们。
通常,我们还需要分析处于D状态的进程卡在了哪里。可通过/proc文件系统查看D状态进程的调用栈:
#cat /proc/56337/stack |
由上图可见,该进程卡在了磁盘的read操作中,很可能是磁盘坏了。
「杀不掉的」僵尸(zombie)进程相关推荐
- 如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之
用ps和grep命令寻找僵尸进程 #ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 ...
- mysql 僵尸进程_如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之
用ps和grep命令寻找僵尸进程 #ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 ...
- Android 手机运存越来越大,为什么后台应用还是会被「杀」?
不知不觉间 Android 陷入了一个关于「后台」的怪圈:一边各大厂商陆续推出了 12G RAM 的手机,另一边你刚刚放到后台的下载任务没有如预期那样后台挂机下载,打开微信发现还得陪启动画面的孤独小人 ...
- 阿里女员工遭遇「杀猪盘」背后的思考
昨天还是情人节,这边朋友圈的狗粮撒满了一地,那边网上就爆出了12位阿里女员工遭遇了情感「杀猪盘」,被一个初中学历的骗财骗色,累计被骗了 1940 万人民币,外加100多万美元. 杀猪盘听得多了,但这事 ...
- iOS13.2频繁「杀」后台,微信给出建议
编辑|排版| @宅哥技术 转载请联系商务合作给你开白名单 来源:宅哥技术(zg_jishu) ---------♥--------- iOS13.2 咱们都知道升级iOS13.2后会杀后台,「杀」后台 ...
- 还有kill -9杀不掉的进程?kill命令详解
我们很多人对kill -9 非常熟悉,在工作中也经常用到.特别是你去重启服务的时候.但是所有的服务都能用kill -9来处理吗?kill -9能杀掉所有的进程吗? 首先我们来了解一下 kill -n ...
- 如何设计 Web App 应用架构?「两分钟了解 IOING」
IOING 在做些什么? IOING 在你的代码和浏览器之间架设了一个中间解释层,该解释层提供了一套新的语法来填补浏览器所不具备的能力. SPA 开发痛点 开发一个 SPA 应用的痛点是不同模块页面的 ...
- 火爆全网,却只有4页!ICLR爆款论文「你只需要Patch」到底香不香?
来源:新智元 [导读]顶会投稿竟只写4页?拳打ViT,脚踢MLP,Patch到底能不能成为ALL YOU NEED? 金秋十月,又到了ICLR截稿的季节! 一篇「Patches are all you ...
- 「斐波那契」投稿法不好使了:IJCAI 2020出台新规,隐瞒「拒稿重投」者将被一票否决...
点击上方"深度学习技术前沿",选择"星标"公众号 资源干货,第一时间送达 投稿被拒是一件非常令人沮丧的事情,但过来人一般会这样劝你:「没关系,改改再投其他家就好 ...
最新文章
- 说一说安装sklearn遇到的坑
- [Android]第四次作业
- 新系统如何测试软件,怎样检测电脑能否升级到最新的Windows11系统?官方检测工具帮你一招搞定!...
- pearson相关系数_使用gbdt我们到底应该怎么用相关系数?
- 科研|饶毅:科学在被淘汰的博士后引领下狂奔
- linux打if语句如何换行,如何在Linux中的列内换行
- 聚合天气--ajax 通过城市名取数据
- ztree 异步展开节点显示不出来_用户管理、角色管理、模块管理、zTree的使用
- Mesos超配:让集群利用率可以达到100%
- 晶振封装(绝对实用)
- yolov4 火焰检测 火焰识别 代码 数据集 开源
- pdf文件转图片的两种方法
- element-ui MessageBox 弹框判断确认和取消
- c++ atuo_ptr 的实现原理
- 一些货币政策及金融术语简介
- Winform contextmenustrip 隐藏图标区域
- python exe文件反编译_[原创]python exe文件解包方法总结
- 揭秘沃尔玛、腾讯、京东、浙商银行的供应链管理方案
- 欲善其事,先利其器——青龙面板依赖安装教程
- 基于可编程图形处理器的骨骼动画算法及其比较
热门文章
- 计算机网络 标性能指标
- 对话:与印度第一大IT教育培训公司CEO谈软件
- 江苏计算机报名时间2021年上半年,关于2021年春季江苏省计算机等级考试报名的通知...
- 清理Xcode占用的Mac硬盘空间
- cocos2dx3.X shader使图片置灰
- linux怎么找网卡驱动,linux系统下如何安装网卡驱动
- ppt生成eps文件_如何将AI/EPS格式文件转为ppt格式
- 【高效工具】分享几个高质量PPT模板
- java毕业设计猎头公司业务管理系统的设计与实现源码+lw文档+mybatis+系统+mysql数据库+调试
- python+django+layUI+MySQL搭建4G设备管理平台项目(一)