今天在处理一个机器异常负载(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进程无效的分析过程的更多相关文章

  1. 如何让Java应用成为杀不死的小强?(上篇)

    各位坐稳扶好,我们要开车了.不过在开车之前,我们还是例行回顾一下上期分享的要点. 项庄舞剑意在沛公,而咱们上期主要借助应用服务器 Resin 的源码,体验了一次 JMX 的真实应用.鉴于 9012 年 ...

  2. 如何让Java应用成为杀不死的小强?(中篇)

    各位坐稳扶好,我们要开车了.不过在开车之前,我们还是例行回顾一下上期分享的要点. 上期我们抛了一个砖:“如何实现 Java 应用进程的状态监控,如果被监控的进程 down 掉,是否有机制能启动起来?” ...

  3. 如何让Java应用成为杀不死的小强?(下篇)

    各位坐稳扶好,我们要开车了.不过在开车之前,我们还是例行回顾一下上期分享的要点. 经过前两期的铺垫及烧脑的分享,我们大概对「如何实现 Java 应用进程的状态监控,如果被监控的进程 down 掉,是否 ...

  4. 记录一次MySQL进程崩溃,无法重启故障排查

    最近程序在跑着没几天,突然访问不了,查看应用进程都还在.只有数据库的进程down掉了.于是找到日志文件看到如下错误 -- :: [Note] InnoDB: Initializing buffer p ...

  5. 不死的小强 .net core 微服务 快速开发框架 Viper 限流

    1.Viper是什么? Viper 是.NET平台下的Anno微服务框架的一个示例项目.入门简单.安全.稳定.高可用.全平台可监控.底层通讯可以随意切换thrift grpc. 自带服务发现.调用链追 ...

  6. linux系统中的进程状态分析

    转载地址:https://blog.csdn.net/shenwansangz/article/details/51981459 linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序, ...

  7. Linux进程理解与实践(五)细谈守护进程

    一. 守护进程及其特性      守护进程最重要的特性是后台运行.在这一点上DOS下的常驻内存程序TSR与之相似.其次,守护进程必须与其运行前的环境隔离开来.这些环境包括未关闭的文件描述符,控制终端, ...

  8. 【转】关于loadrunner中设置进程和线程的区别

    loadrunner中,在进行运行设置中有一项选择,是按进程运行Vuser或按线程运行Vuser?下面进行分别来讲: 1.按进程运行Vuser:Controller将使用驱动程序mdrv运行Vuser ...

  9. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

随机推荐

  1. Android—基于OpenCV+Android实现人脸检测

    导读 OpenCV 是一个开源的跨平台计算机视觉库, 采C++语言编写,实现了图像处理和计算机视觉方面的很多通用算法,同时也提供对Python,Java,Android等的支持,这里利用Android ...

  2. rpc通信模型

    1.client_stub是为了屏蔽客户端调用远程主机的对象,而在本地的一个对象存根,存根负责接受本地方法调用,并将其序列化,然后通过网络发送给服务端.

  3. 论 Web 前端加密的意义

    论 Web 前端加密的意义 Web前端密码加密是否有意义? https://www.zhihu.com/question/25539382 https://blog.csdn.net/hla19910 ...

  4. C#中构造函数和析构函数的用法

    构造函数与析构函数是一个类中看似较为简单的两类函数,但在实际运用过程中总会出现一些意想不到的运行错误.本文将较系统的介绍构造函数与析构函数的原理及在C#中的运用,以及在使用过程中需要注意的若干事项.一 ...

  5. BZOJ4524 CQOI2016伪光滑数(堆)

    对于每个质数求出其作为最大质因子时最多能有几个质因子,开始时将这些ak1~akmaxk扔进堆.考虑构造方案,使得每次取出最大值后,最大质因子.质因子数均与其相同且恰好比它小的数都在堆里.类似暴搜,对于 ...

  6. Thymeleaf 如何支持java8的时间LocalDate和LocalDatetime

    一.添加依赖 <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thym ...

  7. 【心情】HNOI2018游记

    Day 0. 全机房的人好像都在做题.然而下午是社团节的游园会,身为社干的我风风雨雨在外面各种搬凳子搬椅子换场地招待外校同学……就这样我好像什么都没有复习. 晚上就一起去酒店了.大概因为是高一的缘故, ...

  8. 深入探讨Android异步精髓Handler

    探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架 ...

  9. 【bzoj2141】排队 [国家集训队2011]排队(魏铭) 树套树 线段树套替罪羊树

    这个题就是动态偏序对,每次操作做两个删除两个插入就好了. #include<cstdio> #include<iostream> #include<cstring> ...

  10. ionic2 手风琴效果

    user.ts import { Component } from '@angular/core';import { IonicPage, NavController, NavParams } fro ...