Linux服务器故障快速诊断的三大法宝

Linux服务器故障快速诊断的三大法宝
作为一个系统管理员,你认为一切都在你的控制和控制下吗但现实往往是事与愿违,你认为那些是运行和数据收集过程有两个小时没有报告任何消息给你,也许你失去了客户响应,服务器可能有问题,你可以不知道哪里是问题的第一时间,和大多数的问题是每个几天会反复,再好的人的心态,遇到这种情况会暴跳如雷。因此,如何找出运行过程中发生了什么事实上,我们不需要先进的知识或先进的监控套件。我们有足够的工具来使用这个系统。下面介绍一下如何使用Linux工具诊断服务器故障

图形卡故障

顶部和其他系统工具内存故障
如果你想知道发生了什么的过程中,在操作过程中,我们最好把进程的ID,如果你知道名字卡住或资源消耗上升的过程,反检查的过程中的身份是很容易的,ps aux grep的| ProcessName命令的使用,不知道该进程的名称也没关系,我们还可以使用顶部查看内存利用率高或高CPU的共享过程。
任务:总共114个,1个跑步,113个睡觉,0个停止,0个僵尸。

CPU:1.2%个美国,0.6%个SY,0.6%个NI,96%个id,1.6%个佤族,0%个HI,0%个SI,0%个st

Mem:4053756k总,1059196k使用,2994560k自由,305236k缓冲器

互换:2249060k总,0k使用,2249060k自由,465112k缓存
PID用户Pr-Ni VIRT RES SHR的CPU时间为MEM +命令

3055 akkana 200 160m 39m 18M 391 0: 2.83插件容器

2223 akkana 200 330m 107m 26m 162.7 0:火狐51.33仓

65根200000 20 0: 0.34 kondemand / 0

1586根20071712 8244 20.6 24.87 22m 0: xorg

1根200274816121216 0 0: 0.37初始化

2根200000 0 0 kthreadd 0:

3根RT 0000 0 0: 0迁移 / 0

…凡此种种,不一而足。
默认情况下,top命令会根据CPU的反向顺序吃掉多少,在上面的例子中,Firefox卡住了,它运行Flash浏览器,它连同辅助程序占用CPU时钟周期45%,这不是什么,如果你看到CPU利用率达到99%,它必须有一个过程。
当你发现一个过程的问题时,你怎么知道它在做什么在这个时候,Strace。
strace
Strace是一个非常有用的程序,它可以显示系统调用系统调用发生,包括文件操作,如读、写和开放,超时和发送信号网络运营和其他信息系统获取或设置操作,你可以阅读的人2查看详细介绍概述2系统调用列表查看所有可用的系统调用或人。
这一切听起来有点神秘,但有时strace输出能够准确地理解为什么一个程序出了故障,也许在等待网络,也许重复文件,根本不存在。
你可以在strace运行一个程序,如strace Firefox,但更多的时候,你要连接到正在运行的进程。当然,没问题。首先使用PS或顶部获取进程ID,然后使用strace P的进程ID。
假设我有一个程序好像挂了。top命令显示它不使用任何CPU,但是它已经被卡住至少半个小时了,我们什么也没做。我们使用strace P来跟踪它。
strace -p 3672美元

进程3672附加-中断退出

Recv(3,
Strace站在队伍中的光标闪烁。怎么了
事实上,它在等待recv系统调用,退出strace按Ctrl-C,然后用中肯。
关于美元:

Recv(2)-收到一个socket消息

recvfrom(2)收到一个socket消息

Recvmsg(2)-收到一个socket消息
从上面的结果可以看到,进程正在等待读取网络套接字的内容,很明显,我们对这个过程有了进一步的了解。
如何模拟故障
当您构建诊断工具库时,有时您可能希望有一种简单的方法来体验它们。在这一点上,我们需要模仿的过程挂断了。如果你有一个Web服务器,你就可以很好地编写一个脚本
#! / usr /斌/环境Python
进口时间
打印内容类型文本 html
你好,世界。现在我们要等一会儿…
我在系列(50):不要跑下去,堵塞#服务器

(300)time.sleep睡5分钟#

打印另一行
你可以使用wget,卷曲,或写一个Python脚本来测试。
#! / usr /斌/环境Python

进口urllib2

响应= urllib2.urlopen()
当然,如果希望程序占用所有可用的CPU资源,只需在脚本中添加以下代码即可:
当真的

回声X

多恩
只要它实现了,它就可以用在其他语言中。
如果上面的帮助信息仍不够大,有一个最后的法宝—
使用GDB获取堆栈跟踪信息
好吧,我承认,即使进程ID和strace输出,但是仍然没有帮助,别担心,我也使出绝招,诀窍是使用GDB来获取堆栈跟踪信息,堆栈跟踪不仅会告诉你什么程序正在做的,有潜在的信息(如等待,也有了更高的网络套接字)信息化水平(如执行什么类型的网络操作)。
strace的用法一样,GDB也采用P+ID命令格式。启动后,您将获得一个GDB提示符并输入堆栈跟踪的位置
# 0 0x01ad9794在gfxpangofontgroup::GetFontAt(= 0xa74e8160,I = 0)

在gfxpangofonts CPP:1936。

# 1 0x01ad1c11在getfontorgroup(= = 0xa51466b4,关键0xbfab1e2c)

在gfxtextrunwordcache CPP:899。

# 2 textrunwordcache::::KeyEquals(这cachehashentry = 0xa51466b4,

关键= 0xbfab1e2c)在gfxtextrunwordcache CPP:910。

3在# 0x01a5cb74查寻表(表= 0xb45ce2d0,关键=,

keyhash =,= pl_dhash_add OP)在pldhash。C:472

# 4 0x01a5cc50在pl_dhashtableoperate(表= = 0xbfab1e2c 0xb45ce2d0,关键,

OP =)在pldhash。C:661

# 5 0x01ad2421在nsthashtable::PutEntry(

本0xb45ce2c0,atextrun = 0xa7ee0ae0,afirstfont = 0xad613d30,ASTART = 8,

端= 10,ahash = 821,adeferredwords = 0x0)

在.. / / / .. ..距离 /包括/ nsthashtable。H:188

# 6 textrunwordcache::LookupWord(= = 0xa7ee0ae0 0xb45ce2c0,atextrun,

afirstfont = 0xad613d30,ASTART = 8,= 10把,ahash = 821,adeferredwords = 0x0)

在gfxtextrunwordcache CPP:358。

等....
即使您不熟悉Firefox的源代码,也可以从上面的堆栈跟踪结果中看到它处理字体相关的东西。
如果程序循环,那么它会一直做同样的事情,当你运行GDB P,它会暂时停止让你检查提示按C程序可以让它继续,按Ctrl-C将再次停止,然后进入一个会获得第二堆栈的输出。
(GDB)在哪里

0在()# 0xb686db07从 / usr / / / libmozjs.so firefox-3.6.12 lib

1在()# 0xb684bec9从 / usr / / / libmozjs.so firefox-3.6.12 lib

# 2 0xb685cf66在js_invoke()从 / usr / / / libmozjs.so firefox-3.6.12 lib

3在()# 0xb6b6231b从 / usr / / / libxul.so firefox-3.6.12 lib
这一次的结果是不一样的,它只是一种淡淡的Firefox的Javascript(JS)和XUL相关事宜,反复停止和启动程序,你会发现它在大多数时间,有用的信息可以附加到您提交的bug,或使用一些他们在搜索引擎的关键词搜索,看是否有现成的解决方案。
堆栈跟踪被应用到等待资源挂起的程序中,下面是我以前使用的Python程序跟踪的结果。
(GDB)在哪里

# 0 0x006a2422在__kernel_vsyscall()

# recv()在1 0x0095d241 .. / / / sysdeps Unix / Linux i386 SysV / /插座:61。

# 2 0x081301ba在()

# 3 0x081303b4在()

# 4 0x080e0a21在pyeval_evalframeex()

# 5 0x080e2807在pyeval_evalcodeex()

# 6 0x080e0c8b在pyeval_evalframeex()

等....
gdb显示一些信息:收到,接下来的内容告诉你,你正在运行的Python,但它不会告诉你你在Python脚本的地方,你想知道如何挖掘出更多的信息吗请继续关注下一篇文章,我将介绍一些python程序的技术模式,开发工具如GDB没有安装在一台花哨的机器上做什么。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部