一个杀不死的小强,kill进程无效的原因 记录故障排查过程中kill进程无效的分析过程
今天在处理一个机器异常负载(1000+)的问题,碰到了一个从未碰到过的情况,遇到了一个异常顽固的分子。我使用了所能想到的所有杀进程的方法,却始终无法干掉这个顽固分子,最后终于在谷歌大神的指引下,干掉了这个令我郁闷至极的顽固分子。
1.问题描述:
系统:内核 2.6.32.43
机器:web A web+NFS B
机器负载超高,但是却可以正常登录,响应也很快
分析过程:
1.通过top查看,发现CPU和内存都正常,swap使用过大
A机器:/usr/local # toptop - 11:01:29 up 1051 days, 16:55, 3 users, load average: 1694.36, 1694.26, 1679.68Tasks: 5367 total, 1 running, 5366 sleeping, 0 stopped, 0 zombie
Cpu(s): 9.1%us, 19.6%sy, 0.0%ni, 50.0%id, 21.3%wa, 0.0%hi, 0.1%si, 0.0%stMem: 8049196k total, 7985004k used, 64192k free, 4080k buffers
Swap: 2104504k total, 2067308k used, 37196k free, 3381972k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1896 root 20 0 16840 15m 468 S 6 0.2 95:41.71 sap1002
9393 root 20 0 268m 4572 252 S 6 0.1 3650:16 newoctopusd
27609 root 20 0 9648 5300 876 R 4 0.1 0:00.55 top
13737 root 20 0 61072 58m 58m S 1 0.7 0:02.77 sqm_agent
2.free -m查看磁盘使用情况,主要是为了看swap的使用情况
A机器:/usr/local # free -m
total used free shared buffers cached Mem: 7860 6611 1249 0 10 2134-/+
buffers/cache: 4466 3394
Swap: 2055 2045 10
3.揪出罪魁祸首 top +f+p,通过swap栏找出使用swap最多的程序,每个httpd使用4M,好像也不多嘛。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
5135 root 20 0 266m 788 432 S 6 0.0 0:26.68 265m newoctopusd
5082 root 20 0 61072 58m 58m S 1 0.7 0:02.62 1276 sqm_agent 16796 root 20 0 5796 1484 880 R 1 0.0 0:00.09 4312 top
5186 root 20 0 30616 21m 472 S 0 0.3 0:01.21 9112 dnsagent
5831 root 20 0 5288 2060 1320 S 0 0.0 0:00.06 3228 sshd
1 root 20 0 788 304 256 S 0 0.0 0:29.38 484 init
2 root 20 0 0 0 0 S 0 0.0 0:00.00 0 kthreadd
4.由于机器是从其他部门转交过来的,所以想当然认为httpd没啥问题,不过还是随手一个命令,然后就惊呆了,502个进程。
ps axu |grep http|wc -l
502
这是要闹哪样啊,有这么启动进程的?
5. 于是自信满满的killall httpd,/usr/local/apache2/bin/apachectl -k start等着释放资源,发现启动失败,端口占用。
于是查看httpd进程,发现有一个顽固分子残留,好吧,干脆点,killall -9 httpd,/usr/local/apache2/bin/apachectl -k start,加9了不信还有问题,结果可是依旧端口占用。
ps -ef |grep http
nobody 16295 1 0 Nov24 ? 00:00:08 /usr/local/httpd-2.2.19/bin/httpd -k start
root 29211 3398 0 11:02 pts/3 00:00:00 grep http
kill 16295
ps -ef |grep http
nobody 16295 1 0 Nov24 ? 00:00:08 /usr/local/httpd-2.2.19/bin/httpd -k start
root 29625 3398 0 11:02 pts/3 00:00:00 grep http
kill -9 16295
ps -ef |grep http
nobody 16295 1 0 Nov24 ? 00:00:08 /usr/local/httpd-2.2.19/bin/httpd -k start
root 30112 3398 0 11:02 pts/3 00:00:00 grep http
kill -TERM 16295
ps -ef |grep http
nobody 16295 1 0 Nov24 ? 00:00:08 /usr/local/httpd-2.2.19/bin/httpd -k start
root 30112 3398 0 11:03 pts/3 00:00:00 grep http
是不是有什么冤情呢?那就来查看下这个进程的状态,看看有何原因:
ps axopid,comm,wchan | grep 16295
16295 httpd nfs_wait_bit_uninterruptible
原来冤情在这里:谷歌了下,确认是2.6.33.1内核之前的一个NFS bug
nfs_wait_bit_uninterruptible:
https://bugzilla.kernel.org/show_bug.cgi?id=15552
验证:
机器磁盘情况:
A机器:/usr/local # df -hFilesystem Size Used Avail Use% Mounted on/dev/sda1 9.9G 1.8G 7.6G 20% /udev 3.9G 296K 3.9G 1% /dev/dev/sda3 20G 13G 6.4G 67% /usr/local/dev/sda4 103G 28G 70G 29% /data B机器:/xx/htdocs 103G 30G 68G 31% /xx/admin/htdocs
访问挂载的目录,无法访问,长时间无响应
访问远程NFS服务机器B,发现机器超高,基本失去响应了,于是重启机器。
重启B机器 NFS机器后发现,A机器这台机器负载也恢复了。
查看顽固分子16295,发现已经消失了。
root 18012 1 1 11:14 ? 00:00:01 /usr/local/httpd-2.2.19/bin/httpd -k startnobody 18168 18012 0 11:14 ? 00:00:00 /usr/local/httpd-2.2.19/bin/httpd -k startnobody 18169 18012 0 11:14 ? 00:00:00 /usr/local/httpd-2.2.19/bin/httpd -k startnobody 18171 18012 0 11:14 ? 00:00:00 /usr/local/httpd-2.2.19/bin/httpd -k startnobody 18173 18012 0 11:14 ? 00:00:00 /usr/local/httpd-2.2.19/bin/httpd -k startnobody 18175 18012 0 11:14 ? 00:00:00 /usr/local/httpd-2.2.19/bin/httpd -k start uname -r 10.10.6.199: Linux version 2.6.32-573.22.1.el6.x86_64 --->Centos 6.7 x64 yum -y install kernel 如果有异常,尝试
yum clean all
yum makecache
yum --skip-broken update -y yum -y install kernel 然后再试着执行上面命令 http://blog.csdn.net/zhuxiang203/article/details/38779779
一个杀不死的小强,kill进程无效的原因 记录故障排查过程中kill进程无效的分析过程的更多相关文章
- 如何让Java应用成为杀不死的小强?(上篇)
各位坐稳扶好,我们要开车了.不过在开车之前,我们还是例行回顾一下上期分享的要点. 项庄舞剑意在沛公,而咱们上期主要借助应用服务器 Resin 的源码,体验了一次 JMX 的真实应用.鉴于 9012 年 ...
- 如何让Java应用成为杀不死的小强?(中篇)
各位坐稳扶好,我们要开车了.不过在开车之前,我们还是例行回顾一下上期分享的要点. 上期我们抛了一个砖:“如何实现 Java 应用进程的状态监控,如果被监控的进程 down 掉,是否有机制能启动起来?” ...
- 如何让Java应用成为杀不死的小强?(下篇)
各位坐稳扶好,我们要开车了.不过在开车之前,我们还是例行回顾一下上期分享的要点. 经过前两期的铺垫及烧脑的分享,我们大概对「如何实现 Java 应用进程的状态监控,如果被监控的进程 down 掉,是否 ...
- 记录一次MySQL进程崩溃,无法重启故障排查
最近程序在跑着没几天,突然访问不了,查看应用进程都还在.只有数据库的进程down掉了.于是找到日志文件看到如下错误 -- :: [Note] InnoDB: Initializing buffer p ...
- 不死的小强 .net core 微服务 快速开发框架 Viper 限流
1.Viper是什么? Viper 是.NET平台下的Anno微服务框架的一个示例项目.入门简单.安全.稳定.高可用.全平台可监控.底层通讯可以随意切换thrift grpc. 自带服务发现.调用链追 ...
- linux系统中的进程状态分析
转载地址:https://blog.csdn.net/shenwansangz/article/details/51981459 linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序, ...
- Linux进程理解与实践(五)细谈守护进程
一. 守护进程及其特性 守护进程最重要的特性是后台运行.在这一点上DOS下的常驻内存程序TSR与之相似.其次,守护进程必须与其运行前的环境隔离开来.这些环境包括未关闭的文件描述符,控制终端, ...
- 【转】关于loadrunner中设置进程和线程的区别
loadrunner中,在进行运行设置中有一项选择,是按进程运行Vuser或按线程运行Vuser?下面进行分别来讲: 1.按进程运行Vuser:Controller将使用驱动程序mdrv运行Vuser ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
随机推荐
- cmd端口占用查看和关闭端口
cmd——回车,输入netstat -ano——回车,可以查看已占用的端口,记下端口的PID,然后打开任务管理器,点查看,选择列,勾选PID确定,找到对应的PID,结束进程,如果结束不了或者结束后还不 ...
- linux下生成core dump文件方法
core 文件的简单介绍 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”).我们可以认为 co ...
- 如何在tracepoint上注册函数
register_trace_##name宏中 tracepoint_probe_register在这个函数中在同一个cp上可以挂多个处理函数, 查看函数:trace_block_rq_issue中定 ...
- 【bzoj3813】奇数国 线段树
题目描述 给出一个长度为n的序列,每个数都可以由前60个质数的乘积表示,初始每个数都是3.支持两种操作:(1)修改一个数 (2)查询一段区间内所有数的乘积的欧拉函数值模19961993. 输入 第一行 ...
- 【bzoj2764】[JLOI2011]基因补全 dp+高精度
题目描述 在生物课中我们学过,碱基组成了DNA(脱氧核糖核酸),他们分别可以用大写字母A,C,T,G表示,其中A总与T配对,C总与G配对.两个碱基序列能相互匹配,当且仅当它们等长,并且任意相同位置的碱 ...
- BZOJ4597 SHOI2016随机序列(线段树)
先考虑题目所说的太简单了的问题.注意到只要把加减号相取反,就可以得到一对除了第一项都互相抵消的式子.于是得到答案即为Σf(i)g(i),其中f(i)为前缀积,g(i)为第i个数前面所有符号均填乘号,第 ...
- 奇异值分解(SVD)小结
SVD(奇异值分解)真的是一个神奇的东西,这里就写个小结. 其实原理并不是那么难理解. 它在数据去噪方面和降维上有特殊作用,也与PCA有很大的联系. 首先我们先回顾一下 EVD,特征值分解,可以对SV ...
- [洛谷P2044][NOI2012]随机数生成器
题目大意:给你$m,a,c,X_0,n,g$,求$X_{n+1}=(a\cdot X_n+c) \bmod{m}$,最后输出对$g$取模 题解:矩阵快速幂+龟速乘,这里用了$long\;double$ ...
- BZOJ 1023: [SHOI2008]cactus仙人掌图 | 在仙人掌上跑DP
题目: 求仙人掌直径 http://www.lydsy.com/JudgeOnline/problem.php?id=1023 题解: 首先给出仙人掌的定义:满足所有的边至多在一个环上的无向联通图 我 ...
- 【NOIP 模拟赛】钟 模拟+链表
biubiu~~ 这道题实际上就是优化模拟,就是找到最先死的让他死掉,运用时间上的加速,题解上说,要用堆优化,也就是这个意思. 对于链表,单项链表和循环链表都不常用,最常用的是双向链表,删除和插入比较 ...