阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

一次Linux系统1分钟负载5000+的故障排错

427次阅读
没有评论

共计 4099 个字符,预计需要花费 11 分钟才能阅读完成。

昨天上午查看 Zabbix 监控界面时,发现其中一台服务器的进程数量和 1 分钟负载已经达到了一个非常惊人的数量,Zabbix 默认报警数值是进程数量在 5 分钟平均值大于 1000,1 分钟系统负载 5 分钟平均值大于 5。

先大体列一下服务器的软硬件信息:

服务器硬件:Dell PowerEdge R720, 2 x Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz;62.87 GB;PERC H710 SAS RAID5

服务器操作系统:Ubuntu 14.04 LTS,内核:3.13.0-24-generic

图 1:Zabbix 报警信息(Zabbix 消息通知设定的是严重(average)级别以上通过 Web 短信网关发送短信报警):

[img]http://img.linuxidc.com/attachments/forum/201509/08/195529je4vrmhf1z1hss1h.jpg[/img]

图 2:Zabbix 上触发器的报警条件

[img]http://img.linuxidc.com/attachments/forum/201509/08/195529cu6fa67furam3ucu.jpg[/img]

接着不久,就不断有同事反映该服务器响应非常慢,有些应用页面打开很久才出来。由于机房远在天边而且没有远程登录控制台的登录信息(这些信息在客户处),因此只能用 xshell 通过 SSH 登录到 Linux 系统,打开 top 命令看看系统运行情况,发现当前系统内已经有 5800 多个进程在运行,其中系统负载(1、5、15 分钟)都达到了 5400+,但奇怪的是 CPU、内存和硬盘 IO 都并不高,按照常理,如此高的系统负载,CPU 和 IO 等早已经应该是消耗殆尽了,但 top 显示并没有。

图 3.1: Linux 系统中的 top 信息

[img]http://img.linuxidc.com/attachments/forum/201509/08/195529kglnnnul7yqk47kw.jpg[/img]

7 秒前 上传下载附件 (269.83 KB)

图 3.2 通过 iostat、vmstat 等命令发现磁盘 IO 并不高,但系统负载却很高

[img]http://img.linuxidc.com/attachments/forum/201509/08/195530o9x98i46xi9jcrq6.jpg[/img]

7 秒前 上传下载附件 (96.88 KB)

有个开发人员说 pid 为 14898 的 java 进程并没有分配这么大的内存,这个进程有问题,要求负责编写该程序的另一个开发人员检查程序,当时我想,一个 java 进程也不至于把系统负载搞的这么高,一定有别的重要的原因没有发现。我按照往常的方法,先查看一下系统中究竟运行了什么样的程序导致系统内进程这么多,因此执行 ps –ef | more,查看一下系统内全部进程的运行情况,结果发现此命令根本没法执行,刚输出了不到一个屏幕就卡死在屏幕上了,赶紧复制一个 ssh session,继续执行,简单执行 ps,看看能不能执行,结果发现 ps 输出的内容中有大量的 ps 进程,此处感想还好 ps 还能运行只是参数不能加太多了。打开 top 命令,查看一下一个 ps 命令对应的 pid,用 top –p pid 打开,发现是 Zabbix 用户执行的 ps 命令,瞬间感觉不好,别是因为我之前写的 Zabbix 脚本中有问题导致 ps 命令没有退出,才导致的系统一分钟负载这么高。

图 4:用 top 查看 zabbix 用户的进程信息,top –u zabbix

[img]http://img.linuxidc.com/attachments/forum/201509/08/195531ij0e0oaqayo00z89.jpg[/img]

之前有同事电话问我系统中有个 java 进程无法结束,导致某个应用现在有两个 java 进程该怎么办,我跟他说试试 sudo,结果 sudo 也不好用,root 权限也无法杀死。由于当时在家里有事没在公司因此也没去查什么原因。所以此时,我想用 kill 杀掉 zabbix 的 ps 进程时就遇到了同样的问题,发现 ps 进程根本杀不死。无论是使用什么样的进程信号,TERM 还是 KILL 都不好用。仔细一看,原来这些进程的状态都成了 D 状态(上图中 S 显示的那一列)。

关于 D 状态:D 状态是一种特殊的进程状态代码(PROCESS STATE CODES),其英文示意是 Uninterruptible sleep (usually IO),意思是不可中断的睡眠(通常是由于 IO 问题引起的),这个 IO 可能是多种 IO,内存、硬盘、网络、总线都是可能的。既然是 D 状态,那即便是 root 用户也无法杀死的,因为这样的进程它已经不接受任何进程信号,所以任何方式都将无法将其杀死,只能重新启动服务器。但这问题还没找到根源,不能草草的下结论。

检查 Zabbix 的用户参数中设定的脚本和命令行,发现大部分命令行有 ps,但并不没有任何问题,因此初步排除 Zabbix 脚本或命令行中存在的问题,如下图所示:

图 5:Zabbix 用户参数命令行:

[img]http://img.linuxidc.com/attachments/forum/201509/08/195531dviyxgoy0yiwogyo.jpg[/img]

因此只能用 strace 命令找出 ps -ef 进程卡在那里。命令是 strace -o strace_psef.log –f ps –ef

图 6:通过 strace 命令找出命令执行中对系统的调用和收到的信号等信息

[img]http://img.linuxidc.com/attachments/forum/201509/08/195531il82jqqmf5jzlzj2.jpg[/img]

通过上图可以发现到 open 文件 /proc/24602/cmdline 时遇到了停止(等待),通过 cat /proc/24602/cmdline 文件发现也无法正确执行,也会卡死。中间发现像 netstat,ps -p 24602 –o cmd 这种命令都无法使用,甚至 ps -p 1 –o cmd 都无法显示,由于这些命令都是使用 /proc 目录下的文件的,因此 /proc 目录存在问题的可能性非常大,因此继续找原因,继续 top -p 24602 找出这个进程名称(发现除了 top 可用以外,pstree 同样也是可用的)。

图 7.1:ps -p 24602 –o cmd

[img]http://img.linuxidc.com/attachments/forum/201509/08/195531obeyr9o96o5r3dkg.jpg[/img]

图 7.2:ps -p 1 –o cmd 都无法显示

[img]http://img.linuxidc.com/attachments/forum/201509/08/195531p2dczqu1iucot83l.jpg[/img]

7 秒前 上传下载附件 (24.96 KB)

图 7.3:附加的疑问,pts 数值无法还原至 0,

[img]http://img.linuxidc.com/attachments/forum/201509/08/195532drzt8tr8p4rg4mvq.jpg[/img]

通过 top -p 24602 命令发现这个 pid 为 14602 的进程也是 D 状态的

图 8:通过 top -p 24602 找出这个进程名称

[img]http://img.linuxidc.com/attachments/forum/201509/08/195532ed3k04onsaffrq4f.jpg[/img]

但是发现 top 中不能使用 c 命令查看这个进程的命令行,因此只能进入 /proc 目录看看有没有人品能看到该进程使用的一些 fd(文件描述符,file descriptor),结果发现人品不错,通过 cp 复制出来的 /proc/24602 中找到了 task 目录下的 fd,如下图所示:

图 9:通过 fd 找到这个进程属于哪一个应用里面的

[img]http://img.linuxidc.com/attachments/forum/201509/08/195532n5muzonzyy4ywng6.jpg[/img]

发现出问题的这个应用程序就是前天同事问我的那个,也是研发人员说存在问题的那个应用。经过昨天晚上的重启后发现,此进程的内存占用率依然很高,初步判断是程序的问题,当然也要检查一下 IO 问题,但是 Ubuntu 这个系统比较奇怪,系统日志中对此没有任何可用的信息,而 java 程序中产生的日志太多、信息太杂还是让更专业的开发人员去查吧。

到现在,问题的始作俑者算是找到了,但是为什么是由于 IO 问题导致还没找到原因,从上午开始写此文到现在,写此文之前已经告诉有关研发人员去分析代码去了,现在去问了下,初步定位在程序内部有一个模块存在死循环(不断的查询远端数据库)导致的,具体怎么改和深入测试还需要一些时间。

图 10.1:昨天晚上该程序(图中 pid 为 2988)的内存占用为 1.4GB 左右,符合常理,但今早上就 11GB 了(截图之前有过 13GB、12GB 的记录)

[img]http://img.linuxidc.com/attachments/forum/201509/08/195533nes0hmy6ed6fozsm.jpg[/img]

图 10.2:最新截图,又 13GB 了。

[img]http://img.linuxidc.com/attachments/forum/201509/08/195533du7k5c78u678ib37.jpg[/img]

图 11:问题处理的总体思路如下图所示:

一次 Linux 系统 1 分钟负载 5000+ 的故障排错

通过此次事件,总结经验如下:

1. 通过 fd 判断进程的 cmd,除此之外,top -c,pstree -a,ps -ef 等

2. 通过 strace 命令分析进程在哪里等待

3. 了解进程的 D 状态

tag:strace 命令用法, 进程状态 D,Linux 进程分析,Linux 进程调试,strace 调试程序

–end–

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-09/122801.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4099字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7986979
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...