Linux系统管理员工具包 监视运行缓慢的系统.docx
- 文档编号:5150832
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:13
- 大小:25.07KB
Linux系统管理员工具包 监视运行缓慢的系统.docx
《Linux系统管理员工具包 监视运行缓慢的系统.docx》由会员分享,可在线阅读,更多相关《Linux系统管理员工具包 监视运行缓慢的系统.docx(13页珍藏版)》请在冰豆网上搜索。
Linux系统管理员工具包监视运行缓慢的系统
系统管理员工具包:
监视运行缓慢的系统
本书网络下载内容丰富,分享给大家学习。
当您的UNIX系统运行迟缓的时候,及时发现问题是至关重要的,这样就可以使得系统恢复到正常的运行模式。
有许多原因都会导致系统运行迟缓,但有效地确定问题可能相当困难。
在本文中,通过一些学习示例介绍了如何确定和诊断导致您的UNIX系统运行迟缓的原因,以便使计算机重新恢复到正常运行状态。
关于本系列
通常,UNIX管理员都拥有一套他/她经常使用的用来辅助进程管理任务的实用程序、技巧和系统。
有一些重要的实用程序、命令行以及脚本可用来简化各种处理过程。
这些工具中有一部分来自于操作系统,而大部分的技巧则来源于长期的经验和简化系统管理员工作的要求。
本系列文章主要专注于最大限度地利用各种UNIX环境中可用的工具,包括简化异类环境中管理任务的方法。
导致系统运行迟缓的原因
有许多不同的潜在的原因会导致系统运行迟缓,但通常可以将它们分为以下几个方面:
*进程太多。
您的系统可能仅仅只是同时运行了太多的应用程序,或者正在运行少量CPU密集型的操作。
要么是服务器超负荷运行,要么是失控进程耗尽了系统资源。
*活动内存太多。
如果进程使用了大量的内存,那么系统可能会从磁盘换入大量的页面并将大量的页面换出到磁盘,这意味着您的系统花费在内存交换上的时间比真正使用内存的时间更多。
*硬件故障。
有时候,您会碰到导致系统运行迟缓的硬件故障。
不能正常工作的网卡、硬盘或内存,都可能导致系统花费很长的时间等待信息。
要对该问题进行诊断,您需要使用大量可用的工具来检查您的UNIX系统。
选择连接方法
如果您的计算机运行得特别慢,那么第一个问题是如何连接到该计算机以便启动监视进程。
运行迟缓的计算机可能无法接受Telnet或通过远程Shell协议(如ssh)的连接。
如果您尚未登录到系统,那么可能根本无法进行访问。
相反,可以考虑直接或通过独立的硬件解决方案(如网络或基于串口的控制台监视器)来使用控制台。
这种控制台更有可能允许您登录到系统,因为已经有一个登录进程(您的Shell将会代替它)正在运行。
如果在登录到系统后,您无法通过Shell运行任何进程,则表示系统已经耗尽了进程空间,那么重新启动可能是使系统恢复正常的唯一办法。
要重新启动系统,请使用init或telinit来调整运行级别,运行级别6通常表示重新启动。
使用init/telinit更有可能重新启动系统,因为在进行重新启动时仅涉及到了一个进程。
在系统启动并运行后,您需要使用本文中介绍的一些技巧来监视该系统的运行状态并记录其输出结果。
如果再次出现系统运行迟缓的情况,您可以执行事后检查调试并分析系统运行迟缓的原因。
使用uptime
如果您怀疑计算机运行得很慢,那么您应该运行的第一个命令是uptime。
Uptime报告当前时间、计算机启动和运行时间(换句话说,是从计算机启动以来的时间)以及当前的用户数。
然后它会提供三幅图表,以显示最近1分钟、5分钟和15分钟的平均负载。
例如:
1.$uptime
2.18:
28:
54up10days, 8:
38, 2users, loadaverage:
2.24,5.34,3.42
复制代码
在这个示例中,该计算机在最近1分钟、5分钟和15分钟内的平均负载分别超过了2、5和3。
平均负载的定义比较复杂,并且受到正在执行的进程的状态影响。
通常,正在运行、等待CPU或等待I/O的每个进程都会使平均负载加1。
然后对这些图表进行计算并根据时间平均。
在单CPU的系统中,平均负载大于1则表示该CPU难以承受您所分配的负载类型。
但是因为UNIX的多进程的本质,在您关注到该问题前,平均负载在长时间内(换句话说,对应于15分钟的图表)达到2通常是可以接受的。
在多CPU(或多核)系统中,需要将平均负载除以CPU的个数。
要确定计算机是否超负荷运行,请使用上述原则。
查看这些图表的另一种可选的方法是将它们看作百分比,换句话说,如果上面的图表来自于一个单CPU系统,那么如果该计算机的速度比目前快百分之224,那么它就能够处理当前的负载。
在多CPU系统中,您应该使用CPU数目加1来确定最大负载。
例如,一个4CPU的系统可以承受的最大平均负载为5。
通常在短时间内,计算机的平均负载可能比其最大平均负载高的多。
例如,当构建或编译一个应用程序、或执行一项磁盘密集型任务时,平均负载可能会激增。
这正是输出结果中包含1、5和15分钟平均值的原因,因为这样可以帮助消除任何瞬态负载极大值。
任何长时间的或未预料到的较高的值都可能表示存在问题,并且需要进行进一步的研究。
如果这些数值较低,但系统却运行迟缓,那么可能表示存在交换空间的问题。
使用ruptime
如果您管理着由许多系统组成的大型网络,那么有一种简单的方法来监视负载和网络中所有计算机的使用情况。
ruptime工具收集网络上所有计算机广播的数据,并将其集中到一个本地文件中,以便对所有计算机的当前状态进行检查。
例如,清单1显示了一个小型网络的输出结果:
清单1.一个小型网络的输出
1.$ruptime
2.bear up10+09:
13, 2users, load0.66,0.68,0.50
3.ultra3 up 6+01:
16, 1user, load0.00,0.00,0.00
4.atuin down 4+00:
52
复制代码
最后一台计算机11分钟内没有报告任何数据,所以将其列为停机。
要生成这些信息,需要在本地网络中的每台计算机上运行rwhod守护进程(有时候是in.rwhod)。
这个守护进程为本地计算机广播信息,并收集来自所有其他计算机的广播数据。
因为rwho/ruptime系统的工作方式的原因,所以可能存在一些性能问题,尤其是在大型的网络中,它们生成的大量的系统报告和网络流量可能是有害的。
在非常繁忙的系统中,对这些数据进行广播的需求可能也就意味着永远无法报告这些信息,这些数据可能过期,或者在系统繁忙时将其报告为停机。
跟踪大型进程
如果您怀疑是一个大型的或过度繁忙的进程导致了该问题,那么您应该检查ps工具的输出,查找进程大小、内存百分比和CPU利用率。
在SVR4系统(Solaris和AIX®)中,您可以使用下列命令来获得进程的列表(请参见清单2)。
清单2.获得进程列表的命令
1.$ps-A-opcpu,pmem,rss,vsz,comm
2.%CPU%MEM RSS VSZCOMMAND
3.0.2 0.0 0 0fsflush
4.0.1 0.214648288/usr/lib/ssh/sshd
5.0.1 0.110321320ps
6.0.0 1.0953647608/usr/openwin/bin/Xsun
7.0.0 0.7631210720dtgreet
8.0.0 0.661369352/usr/sfw/sbin/snmpd
9.0.0 0.432085720/usr/lib/fm/fmd/fmd
10.0.0 0.328088512/usr/lib/ssh/sshd
11.0.0 0.328008504/usr/lib/ssh/sshd
12.0.0 0.327688512/usr/lib/ssh/sshd
13.0.0 0.323684056/usr/sbin/nscd
14.0.0 0.220969176/usr/dt/bin/dtlogin
15....
复制代码
清单3显示了在BSD派生系统中的ps工具的输出。
清单3.一个BSD系统中获得的进程列表
1.$ps-A-opcpu,pmem,rss,vsz,command|sort-n+3
2.%CPU%MEM RSS VSZCOMMAND
3. 0.0 0.0 152 27236nfsd-server
4. 0.0 0.0 152 27236nfsd-server
5. 0.0 0.0 152 27236nfsd-server
6. 0.0 0.0 152 27236nfsd-server
7. 0.0 0.0 152 27236nfsd-server
8. 0.0 0.0 152 27236nfsd-server
9. 0.0 0.0 152 27236nfsd-server
10. 0.0 0.0 152 27236nfsd-server
11. 0.0 0.0 164 27236nfsd-master
12. 0.0 0.0 224 27240/usr/sbin/update
13. 0.0 0.3 4364 29196/usr/sbin/securityd
14. 0.0 0.2 2760 29288jabberd-c/etc/jabber/jabber.xml-H
15./private/var/jabber/-Ujabber
16. 0.0 0.0 184 29300nfsiod-n4
17.0.0 0.2 3544 29712/usr/sbin/configd
18. 0.0 0.0 500 30628/usr/sbin/sshd-i
19. 0.0 0.0 260 30648/usr/sbin/smbd-D
20. 0.0 0.0 736 30648/usr/sbin/smbd-D
21. 0.0 0.1 1216 30700/usr/sbin/sshd-i
22....
23. 0.0 0.1 2180 50664imapd:
narcissus.mcslp.pri[192.168.0.110]
24.mcuser.mc
25. 0.0 0.1 2184 50664imapd:
sulaco.mcslp.pri[192.168.0.101]
26.mcuser.mc
27. 0.0 0.1 2204 50720imapd:
narcissus.mcslp.pri[192.168.0.110]
28.buyuser.buy
29. 0.0 0.1 2264 50720imapd:
sulaco.mcslp.pri[192.168.0.101]buy
30.user.buy
31. 0.0 0.1 2272 50984imapd:
kernel.mcslp.pri[192.168.0.106]slp
32.user.slp
33. 0.0 1.2 18348 54368servermgrd-x
34. 0.0 0.2 3200 85920/usr/sbin/named-f
35. 0.0 1.1 16820 122240/usr/libexec/mysqld--basedir=/usr
36.--datadir=/var/mysql--user=mysql--pid-file=/var/mysq
37. 0.0 0.5 8572 158164/usr/libexec/slapd-d0-hldap:
///
38.ldapi:
//%2Fvar%2Frun%2Fldapi
39. 0.0 0.0 204 289396rpc.statd
复制代码
在上面两个例子中,进程列表中显示了CPU和内存使用率,以便您能够清楚地了解系统中的负载情况。
‘s’和‘stat’列(分别对应于SVR4和BSD)显示了进程的当前状态。
对于大量的运行的进程,状态‘R’表示该进程当前正在运行。
通过使用状态、CPU和内存百分比的组合,您应该可以确定是否存在失控的和大量消耗系统资源的进程。
使用iostat
iostat工具提供了关于终端、磁盘活动和CPU利用率的信息。
您可以指定单个数值参数来设置报告的时间间隔,并指定另一个数值参数来设置报告的数量。
例如,清单4显示了如何每5秒钟报告相应的统计信息。
清单4.每隔5秒报告统计信息
1.$iostat5
2. tty dad1 sd1 nfs1 cpu
3.tintoutkpstpsserv kpstpsserv kpstpsserv ussywtid
4. 0 7440 39 14 0 0 3 0 0 0 518 077
5. 0 39 2 0 0 0 0 0 0 0 0 0 0 0100
6. 0 13 4 3 0 0 0 0 0 0 0 0 0 0100
7. 0 13 0 0 0 0 0 0 0 0 0 0 0 0100
复制代码
对于不同的系统,缺省情况下显示的确切的信息也有所不同,清单4来自于一个Solaris系统。
清单5中的示例来自于一个BSD环境。
清单5.一个BSD系统中的iostat
1. disk1 disk0 cpu
2. KB/ttps MB/s KB/ttps MB/s ussyid
3.167.67 0 0.02 20.70 5 0.09 6 390
4. 0.00 0 0.00 0.00 0 0.00 15 382
5. 0.00 0 0.00 0.00 0 0.00 16 282
6. 0.00 0 0.00 14.33 24 0.33 18 479
7. 0.00 0 0.00 2.83 1 0.00 23 473
复制代码
先来看看CPU统计信息,这些列分别显示了用户(us)、系统(sy)和空闲(id)百分比。
用户时间显示了用于该用户进程的时间。
系统时间则显示了系统进程耗费的时间(在没有显示等待时间时,包括系统等待I/O的时间)。
空闲时间显示了CPU处于空闲状态的时间的百分比。
磁盘的输出显示了各个物理磁盘(在合适的情况下包括NFS加载)的工作情况,通常以每秒处理事务数和每秒传输的MB或KB作为单位。
其中的较大数值,尤其是同时具有较高的等待/系统时间,可能表示对于该系统而言,磁盘的速度太慢。
您可以尝试展开您的应用程序,以便它使用不同的磁盘,这样可能可以改善它的性能。
如果该磁盘同时用作虚拟内存,那么可能是因为缺少内存和过多的交换的问题。
使用vmstat
您可以使用vmstat工具来监视虚拟内存统计信息。
与iostat一样,它接受一个数值时间间隔(请参见清单6)。
清单6.使用vmstat监视内存统计信息
1.$vmstat5
2.kthr memory page disk faults cpu
3.rbw swap free re mfpipofrdesrdds1--in sy
4.csussyid
5.0002820888809552945251216950026160 02971342
6.272 9 487
7.00028247527788722 7 0 0 0 0 0 0 0 0229 34
8.109 0 199
9.00028247527788720 0 0 0 0 0 0 2 0 0233 28
10.116 0 0100
11.00028247527788720 0 0 0 0 0 0 0 0 0228 26
12.110 0 0100
13.00028247527788720 0 0 0 0 0 0 0 0 0229 28
14.111 0 0100
复制代码
vmstat工具输出线程/进程信息、内存/交换区使用率、换进/换出页面、磁盘I/O、页面错误和CPU统计信息。
CPU/线程块显示了运行队列(r)中的进程/线程、等待I/O资源的阻塞进程(b)和那些被交换的进程。
阻塞进程列中较高的值表示磁盘的速度较慢。
交换列中较高的数值表示存在许多进程使用了太多的内存,需要对它们进行换入和换出。
交换是一项开销非常高的处理,并且将明显地降低系统的性能。
内存列显示了当前可用的交换区大小和空闲列表的大小(如果对RAM提出请求,可以被交换的页面的数目)。
较低的交换值表示即将耗尽交换空间,这并不一定表示存在问题,只要您拥有足够的RAM来运行相应的应用程序。
较低的空闲列表值可能表示使用了大量的活动RAM,如果您向该系统中添加更多的进程,那么可能引起交换空间的使用。
页面列显示了从磁盘交换进来的和交换到磁盘的内存页面。
键值列是pi/po(换进/换出的页面),这表示了对多少页面进行了交换。
较高的分页表示缺少RAM,较高的扫描速率(sr列)显示了潜在的内存瓶颈。
使用top
top工具可以提供一种有效的方法来监视活动中的系统和活动的进程、负载以及内存统计信息。
有许多不同类型的top,在缺省情况下,某些系统中安装了其中的一部分,而这些top是最新的开放源码版本的工具。
它所提供的相关信息更像是uptime、交换空间和ps工具的组合。
例如,下面的输出来自于Solaris系统中运行的V3.5.1版本的top工具(请参见清单7)。
清单7.使用top
lastpid:
9385; loadaverages:
7.14, 2.98, 1.21
61processes:
55sleeping,4running,1zombie,1oncpu
CPUstates:
0.0%idle,93.8%user, 6.2%kernel, 0.0%iowait,
0.0%swap
Memory:
1024Mreal,712Mfree,125Mswapinuse,2705Mswapfree
PIDUSERNAMELWPPRINICE SIZE RESSTATE TIME CPUCOMMAND
9313root 1 22 0 35M 34Mrun 0:
03 8.87%cc1
9349root 1 22 0 21M 20Mrun 0:
01 5.47%cc1
9385root 1 39 04320K3904Krun 0:
00 0.38%as
9384root 1 29 03888K3424Krun 0:
00 0.30%as
9145root 1 59 03736K2144Kcpu 0:
00 0.11%top
9180root 1 59 01808K1472Ksleep 0:
00 0.10%make
486root 1 59 0 46M9536Ksleep 0:
00 0.03%Xsun
548root 1 59 0 10M6360Ksleep 0:
00 0.03%dtgreet
553mc 1 49 08288K1472Ksleep 0:
01 0.02%sshd
9345root 1 49 01328K 928Ksleep 0:
00 0.01%gcc
9348root 1 59 01328K 928Ksleep 0:
00 0.01%gcc
9325root 1 49 01328K 928Ksleep 0:
00 0.01%gcc
599mc 1 59 08288K1488Ksleep 0:
00 0.00%sshd
9312root 1 59 01328K 928Ksleep 0:
00 0.00%gcc
9root 16 59 09464K2016Ksleep 0:
06 0.00%
svc.configd
top工具显示了各个进程的CPU使用情况,例如,在前面的示例中,可以看到正在编译大量的文件以及它们使用CPU的比例。
您还应该注意进程的状态:
较高的运行进程的数目可能表示系统过于繁忙(将运行进程与CPU状态和系统的平均负载进行比较)。
Top本身可能耗费大量的CPU,所以最好是以较大的更新时间间隔来运行它,以避免监视工作对系统性能带来损害。
您可以使用-s或-d命令行选项(根据您使用的平台来决定)以秒为单位来指定更新的时间间隔。
使用SAR
有些时候,您需要在系统出现问题后对其状态进行监视,但是却又无法实时监视服务器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux系统管理员工具包 监视运行缓慢的系统 Linux 系统管理员 工具包 监视 运行 缓慢 系统