《LINUX系统故障诊断及其排除14399.docx》由会员分享,可在线阅读,更多相关《LINUX系统故障诊断及其排除14399.docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2007-4-177 14:30:000 图书导读 本章解释如如何使用适适用于Linuux的大量性性能工具及及每个工具具中信息的的意义。即即使已经使使用top或者sar,也可能能从本章学学到相关知知识。应该养成使使用这些工工具的习惯惯。当然要要知道如何何诊断性能能问题,但但也应该定定期寻找可可能指示问问题的关键键指标的变变化。可以以使用这些些工具衡量量新应用程程序对性能能的影响。就就如同查看看车内的温温度表一样样,要注意意Linuux系统的性性能指标。本本章介绍的的工具有: ttop ssar vvmstaat iiostaat ffree可以作为普普通用户运运行这些工工具。它们们都利用/pr
2、ooc文件系统统得到它们们的数据。这这些性能工工具和几个个rpm一起提供供。proccps rrpm提供top、free和vmsttat。syssstat rpm提供sar和iosttat。top命令令是一个优优秀的交互互式实用工工具,用于于监视性能能。它提供供关于整体体Linuux性能的几几个概要行行,但是报报告进程信信息才是top真正的长长处。可以以广泛自定定义进程显显示,也可以添加字字段,按照照不同指标标排序进程程列表,甚甚至从top注销进程程。sar实用用工具提供供监视每一一事件的能能力。它至至少有15个单独的的报告类别别,包括CPU、磁盘、网网络、进程程、交换区区等等。vmstaat
3、命令报告告关于内存存和交换区区使用的广广泛信息。它它也报告CPU和一些I/O信息。iosttat报告存储储输入/输出(I/O)统计资资料。这些命令覆覆盖许多相相同的地方方。本节讨讨论如何使使用这些命命令并解释释每个命令令产生的报报告,并不不讨论所有有15种sar语法,但但是介绍了了其中最常常见的。3.1 toptop命令令是最流行行的性能工工具之一。大大多数系统统管理员运行top查看Linux和UNIX系统的运运行情况。top实用工具具提供一种种监视进程程和Linuux整体性能能的理想方方法。将Linuux进程称作作任务更准准确,但是是在本章中中我们还是是将它们称称作进程,因因为这个工工具也这
4、样样称呼它们们。1普通用户户和root用户都可可以运行top。图3-1显示一个个空闲系统统的典型top输出。图3-1 topp输出top显示示有两个部分。大大约前三分分之一显示示关于Liinux的整体信信息,其余余行为各个个进程信息息。如果扩扩展窗口则则显示更多多进程而填填充整个屏屏幕。更全面的LLinuxx信息可以以通过使用top之外的几几个命令来来得到。不不过,通过过一个命令令在一个屏屏幕上显示示所有信息息比较理想想。第一行行显示最近近1分钟、5分钟和15分钟的负负载平均值值。负载平平均值表示示在CPU上运行或或者等待运运行多少进进程。uptiime命令也可可以用来显显示负载平平均值。接接
5、下来是进进程信息,之之后是CPU、内存和和交换区。内内存和交换换区信息与与free命令输出出类似。在在我们确定定内存和CPU使用之后后的下一个个问题是哪哪些进程正在使使用它。大部分进程程信息也可可以通过ps命令得到到,但是top提供一种更更易于阅读读的格式。最最有用的是是用于提供供帮助的h,它列出top的其他交交互式命令令。3.1.11 添加和移移除字段字段可以从从显示中添添加或移除除。进程输输出可以按按照CPU、内存或或者其他指指标排序。这这是一个查查看什么进进程抢夺内内存的理想想方法。各各个Linuux发布版本本的top语法和交交互式选项项不同,帮帮助命令可可以快速列列出什么命命令可用。有
6、有许多交互互式选项可可用,用户户应该花费费一些时间间来试验它它们。图3-2显显示Red Hat Enteerpriise LLinuxx ES releasee 3的帮助屏屏幕。图3-2 topp的帮助屏屏幕f命令用来来从top输出中添添加或者移移除字段。图3-3是一个Red Hat Enterprise Linux ES release 3的帮助屏幕,显示什么字段可以添加。图3-3 topp添加/移除字段段的屏幕图3-4显显示一个SUSEE Linnux 99.0 ttop的帮助屏屏幕,可见见它们提供供的命令差差别非常大大。图3-4 SUSSE toop的帮助屏屏幕3.1.22 解释输出出让
7、我们研究究top信息的意意义,以top的如下输输出为例:top输出出的第一行行显示负载载平均值信信息:这个输出与与uptiime的输出类类似。从中中可看到Linuux已经运行行时间、当当前时间和和用户数量量,以及1分钟、5分钟和15分钟负载平均值。接下下来显示进进程概要:我们看到总总共有73个进程,其其中72个进程正正在休眠,一一个进程正正在运行,没没有僵化进进程或者被被停止的进进程。当一一个进程退退出并且它它的父进程程没有通过过wait(2)或者waittpid(2)函数等等待它时,它它就会成为为僵化进程程。这通常常是由于父父进程在它它的子进程程之前退出出造成的。不不同于进程程表中的项项,僵
8、化进进程不使用用资源。停停止的进程程是已经向它它发送STOP信号的进进程。更多多信息,请请参见signnal(7)手册页。接下来是CCPU信息:CPU行描描述CPU如何使用用它们的CPU周期。top命令报告CPU在用户或或者内核模模式、运行行良好进程程以及处在在空闲状态态时所花费费时间的百百分比。iowaait列显示没没有进程在在CPU上运行时时,处理器器等待I/O完成的时时间的百分分比。irq和softtirq列表示处处理硬件和和软件中断断所花费的的时间。早早于2.6版本的Linuux内核不报报告irq、softtirq和iowaait。接下来是内内存信息:前三个指标标提供内存存使用的概概要
9、,列出出了总的可可用内存、已已使用内存存和自由内内存,它们们都是确定定对于Linuux内存是否否足够所需需信息。接下来五个个指标标识识已使用的的内存如何何分配。shrd字段显示示共享的内内存使用,buff是缓冲使使用的内存存。分配给给内核或者者用户进程程的内存可可以处在三三种不同状状态:活动动(actiive)、不活活动脏(inacctivee dirrty)和不活活动干净(inacctivee cleean)。活动动在top中用aotv表示,表表示该内存存最近被使使用。不活活动脏在top中用in_d表示,表表示该内存存最近没有有使用,可可以回收。要要回收内存存,必须将将它的内容容写到磁盘盘,
10、这个进进程命名为为“清洗”,也可称称作内存的的第四种临临时状态。一一旦被清洗洗,不活动动脏内存成成为不活动动干净内存存,在top中用in_c表示。由Normm Murrray和Neill Horrman合著的Unndersstandding Virttual Memoory iin Reed Haat Ennterpprisee Linnux 33是一本优优秀的参考考书,网址址为httpp:peoople.redhhat.ccom/nnhormman/ppaperrs/ rrhel33_vm.pdf。接下来是交交换区信息息:av字段是是可用的交交换区总量量,之后是是已用数量量和自由数数量,最后
11、是内核用用于缓存的的内存数量量。top显示示的其余部部分是进程程信息:top显示示尽可能多多的能适合合屏幕的进进程。top(1)手册页页中提供了了字段说明明的描述。表3-1提供了这些字段的概要。表3-1 topp进程字段段字 段说 明PID进程id编编号USER进程所有者者的用户名名PRI进程的优先先级SIZE进程大小,包包括它的代代码、栈和和数据区域域,以千字字节为单位位RSS进程使用的的内存总量量,以千字字节为单位位SHAREE进程使用的的共享内存存数量STAT进程的状态态,通常R表示运行行,S表示休眠眠%CPU自从最近的的屏幕更新新以来,这这个进程使使用的CPU百分比%MEM这个进程使使
12、用的内存存百分比TIME自从进程启启动以来,这这个进程使使用的CPU时间量CPU最近执行进进程的CPUCOMMAAND正在执行的的命令3.1.33 保存自定定义一个非常好好的top功能是保保存当前配配置。可以以使用交互互式命令s任意更改改显示,然然后按w保存该视视图。top在用用户的主目目录中写入入一个.topprc文件,用用来保存配配置,以便便下一次这这个用户启启动top时使用相相同的显示示选项。top也寻寻找默认配配置文件/etcc/topprc。这是一一个全局配配置文件,当当任何用户户运行实用用工具时,top将读取该该文件。这这个文件可可以使top以安全模模式运行,也也可以设置置刷新延迟
13、迟。安全模模式阻止非非root用户注销销或者更改改进程的正正常值,也也阻止非root用户更改top的刷新值值。Red Hat Entterprrise Linuux ESS relleasee 3的一个/etc/toprrc示例文件件如下所示示:s表示安全全模式,3定义三秒秒钟刷新间间隔。其他他发布版本本可能有不不同的/etcc/topprc格式。注注销进程是是一个非常常实用的功功能。如果果用户有一一个失控的的进程,通通过top命令可以以轻易找到到并注销它它,具体步步骤为:运运行top,通过u命令显示示用户的所所有进程,然然后使用k注销它。top不只只是一个优优秀的性能能监视工具具,它也可可以
14、用来通通过注销那那些产生问问题的进程程从而改进进性能。3.1.44 批处理模模式top也可可以以批处处理模式运运行。尝试试运行以下下命令:-n 1告告诉top只显示一一次迭代,-b选项表示示以适合写写入文件的的文本形式式输出或者者定向到另另一个程序序(例如less)。类似似以下两行行脚本的命命令可以顺顺利完成cron工作:可以将它添添加到cronntab,并每隔15分钟收集集一次输出出。通过批处理理可以轻松松完成所有有任务,无无需用户的的干涉。所所有进程都都被列出,输输出并不是每5秒钟刷新新一次。如如果用户的的主目录中中存在一个个.topprc配置文件件,那么它它用来格式式化显示。以以下是在一
15、一个多CPU Linuux服务器上上运行top批处理模式式的输出。注注意,其中中没有显示示top输出的所所有258个进程。现在读者可可能明白了了为什么top会如此流流行。top的交互式式本质和容容易自定义义输出的能能力使它成成为诊断问问题的优秀秀工具。3.2 sarsar是一一个优秀的的一般性能能监视工具具,它可以以输出Linuux所完成的的几乎所有有工作的数数据。sar命令在syseetat rpm中提供。示示例中使用用syssstat版本5.0.5,这是稳稳定的最新新版本之一一。关于版版本和下载载信息,请请访问syssstat主页httpp:/ppersoo.wannadooo.fr/se
16、baastieen.goodardd/。sar可以以显示CPU、运行队队列、磁盘盘I/O、分页(交交换区)、内内存、CPU中断、网网络等性能能数据。最最重要的sar功能是创创建数据文文件。每一一个Linuux系统都应该该通过cron工作收集sar数据。该sar数据文件件为系统管管理员提供供历史性能能信息。这这个功能非非常重要,它它将sar和其他性性能工具区区分开。如如果一个夜夜晚批处理理工作正常常运行两次次,直到下下一个早上上才会发现现这种情况况(除非被被叫醒)。我我们需要具具备研究12小时以前前的性能数数据的能力力。sar数据收集集器提供了了这种能力力。有许多多报告语法法,我们首首先讨论数数
17、据收集。3.2.11 saar数据收集集器sar数据据收集通过过/usrr/libb/sa中的一个个二进制可可执行文件件和两个脚脚本来完成成。sar数据收集集器是一个个位于/usrr/libb/sa/sadcc的二进制制可执行文文件。sadc的工作是是写入数据据收集文件件/varr/1ogg/sa/。可以为sadc提供几个个选项。常常见语法是是:间隔是取样样间的秒数数,iterratioons是要取得得的样本数数量,filee name定义输出出文件。简简单的sadc语法是/usrr/libb/sa/sadcc 3600 5/ttmp/ssadc.out。这个命命令在5分钟间隔隔取得5个样本并
18、并将它们保保存在/tmpp/saddc.ouut。我们应应该定期收收集样本,因因此需要一一个由cron运行的脚脚本。应该该把样本放放在一个有有意义的地地方,如在在前一节中中使用top脚本时那那样。syssstat rpm提供/usrr/libb/sa/sa1脚本来完完成所有这这些事情。sa1(88)手册页页比sa1脚本本身身要长得多多。/usrr/libb/sa/sa1是一个非非常简单的的脚本,使使用语法sadcc -F -L 1 1 /vvar/llog/ssa/saa#来运行sadc,其中#是某月的的日期。较较老版本的的sa1使用datee+.%YY_%m_%d的输出作作为文件后后缀。如果
19、果需要,可可以使用-F选项使sadc强制创建建输出文件件。-L在写入输输出文件之之前锁定它它,以防止止两个sadc进程同时时运行时损损坏该文件件。较老版版本的sadc没有-L选项,因因此sa1脚本执行行手工锁定定。sa1脚本的选选项只是样样本之间的的间隔和取取样迭代的的次量。cron文件(/etcc/croon.d/syssstat)和syssstat一起提供供,在各syssstat版本之间间它有所不不同。以下下是5.0.5版本的syssstat的的条目:可见,在ssyssttat rrpm安装之后后,sadc开始取得得样本。syssstat主页是httpp:/ppersoo.wannadoo
20、o.fr/ sebbastiien.ggodarrd/2。文档链链接提供以以下类似2006年1月14日的cronntab方案:Sebasstienn Goddard的网站的cronntab示例建议议周一至周周五从早晨晨8点到下午6点每10分钟取一一次样本,其其他时间每每小时取得得一个样本本(注意,cronntab注释为下下午7点,但实实际上是18:000,即下午6点)。如如果/var中的磁盘盘空间足够够,可以每每天都每小小时的每10分钟取样样一次。如如果周末备备份较慢,每每小时一次次sadc取样可能能帮助不大大。现在让我们们研究更流流行的报告告语法。3.2.22 CPPU统计数据据sar -u
21、输出显示CPU信息。-u选项是sar的默认选选项。该输输出以百分分比显示CPU的使用情情况。表3-2解释该输输出。表3-2 sarr -u字段字 段说 明CPUCPU编号号%userr在用户模式式中运行进进程所花的的时间%nicee运行正常进进程所花的的时间%systtem在内核模式式(系统)中中运行进程程所花的时时间%iowaait没有进程在在该CPU上执行时时,处理器器等待I/O完成的时时间%idlee没有进程在在该CPU上执行的的时间这些看起来来应该比较较熟悉,它它和top报告中的CPU信息内容容相同。以以下显示输输出格式:其中的5 10导致sar以5秒钟间隔隔取得10个样本。任任何sa
22、r报告的第第一列都是是时间戳。我们本来可可以研究使使用-f选项通过sadc创建的文文件。这个个sar语法显示sar -f/vvar/llog/ sa/ssa21的输出:在多CPUU Linnux系统中,sar命令也可可以为每个个CPU分解该信信息,如以以下sar -u -P ALLL 5 5输出所示示:3.2.33 磁盘I/O统计数据据sar是一一个研究磁磁盘I/O的优秀工工具。以下下是sar磁盘I/O输出的一一个示例。第一行-dd显示磁盘I/O信息,52选项是间间隔和迭代代,就像sar数据收集集器那样。表3-3列出了字段和说明。表3-3 saar -dd字段字 段说 明DEV磁盘设备tps每
23、秒传输数数(或者每每秒IO数)rd_seec/s每秒5122字节读取取数wr_seec/s每秒5122字节写入入数512只是是一个测量量单位,不不表示所有有磁盘I/O均使用512字节块。DEV列是dev#-#格式的磁磁盘设备,其其中第一个个#是设备主主编号,第第二个#是次编号号或者连续续编号。对对于大于2.5的内核,sar使用次编编号。例如如,在sar -d输出中看看到的dev33-0和dev33-1。它们对对应于/devv/hdaa和/devv/hdaal。请看/dev中的以下下各项:/dev/hda有主编号3和次编号0。hda1有主编号3和次编号1。3.2.44 网络统计计数据sar提供供
24、四种不同同的语法选选项来显示示网络信息息。-n选项使用用四个不同同的开关:DEV、EDEV、SOCK和FULL。DEV显示网络络接口信息息,EDEV显示关于于网络错误误的统计数数据,SOCK显示套接接字信息,FULL显示所有有三个开关关。它们可可以单独或或者一起使使用。表3-4显示通过-n DDEV选项报告告的字段。表3-4 sarr -n DEV字段字 段说 明明IFACEELAN接口口rxpckk/s每秒钟接收收的数据包包txpckk/s每秒钟发送送的数据包包rxbytt/s每秒钟接收收的字节数数txbytt/s每秒钟发送送的字节数数rxcmpp/s每秒钟接收收的压缩数数据包txcmpp/
25、s每秒钟发送送的压缩数数据包rxmcsst/s每秒钟接收收的多播数数据包以下是使用用-n DDEV选项的sar输出:关于网络错错误的信息息可以用sar -n EEDEV显示。表3-5列出了显显示的字段段。表3-5 ssar -n EDDEV字段字 段说 明IFACEELAN接口口rxerrr/s每秒钟接收收的坏数据据包txerrr/s每秒钟发送送的坏数据据包coll/s每秒冲突数数rxdroop/s因为缓冲充充满,每秒秒钟丢弃的的已接收数数据包数txdroop/s因为缓冲充充满,每秒秒钟丢弃的的已发送数数据包数txcarrr/s发送数据包包时,每秒秒载波错误误数rxfraam/s每秒接收数数据
26、包的帧帧对齐错误误数rxfiffo/s接收的数据据包每秒FIFO过速的错错误数txfiffo/s发送的数据据包每秒FIFO过速的错错误数SOCK参参数显示IPCS套接字信信息。表3-6列出显示示的字段及及其意义。表3-6 ssar -n SOOCK字段字 段说 明totscck使用的套接接字总数量量tcpscck使用的TCCP套接字数数量udpscck使用的UDDP套接字数数量rawscck使用的raaw套接字数数量ip-frrag使用的IPP段数量sar可以以产生许多多其他报告告。我们有有必要仔细细阅读sar(1)手册页,查查看是否有有自己需要要的其他报报告。3.3 vmsttatvmsta
27、at命令也是是显示Linuux性能指标标的方法,它它报告了许许多信息,理理解这些信信息有一定定难度。输出分为66个类别:进进程、内存存、交换区区、I/O、系统和CPU。与iosttat类似,第第一个样本本是从最近近重新启动动以来的平平均值。以以下是一个个典型的vmsttat输出:-m选项使使内存字段段以兆字节节为单位显显示。vmstaat和许多其其他性能命命令一样使使用取样间间隔和计数数参数。进程(prrocs)信息有有两列。r列是可运运行进程的的数量,b列是阻塞塞进程的数数量。内存部分有有4个报告虚虚拟内存如如何使用的的字段。表表3-7列出这些些字段及其其意义。表3-7 vmsstat内存字
28、段段字 段说 明Swpd已用的交换换空间数量量free自由RAMM数量buff缓冲使用的的RAM数量cachee文件系统缓缓存使用的RAM数量接下来是交交换(swap)指标。交交换只是一一个古老术术语,但是是显然不会会消失。交交换涉及分分页读取或或写入磁盘盘的进程所所消耗的所所有内存。它它将显示系系统达到的的性能指标标水平。而而Linuux所做的是是,以小块块方式按照照需要对磁磁盘空间进进行分页操操作。因此此,我们可可能应该停停止说交换换到磁盘的的内存,并并开始说分分页到磁盘盘的内存。对对于任何一一种方法,表3-8解释了相关字段。表3-8 vmmstatt交换字段段字 段说 明明si从磁盘分页
29、页到内存的的数量so从内存分页页到磁盘的的数量在交换之后后是两个I/O字段。这这部分提供供了一个简简略介绍以以帮助确定定Linuux是否正忙忙于完成许许多磁盘I/O。vmsttat只提供两两个字段,显显示出入磁磁盘的数据据量(参见见表3-9)。表3-9 vmmstatt io字段字 段说 明bi从磁盘读入入的块bo写入磁盘的的块系统字段提提供Linuux内核进行行进程管理理的繁忙程程度的摘要要。中断和和上下文开开关参见表3-10。上下文文开关指进进程移出CPU或者移入CPU。表3-100 vvmstaat系统字段段字 段说 明in系统中断cs进程上下文文开关最后,CPPU状态信息息用总CPU时
30、间的百百分比来表表示,如表表3-11所示。表3-111 vvmstaat cppu字段字 段说 明us用户模式sy内核模式wa等待I/OOid空闲3.4 iosttatiostaat命令是另另一个研究究磁盘吞吐吐量的工具具。和sar类似,iosttat可以使用用间隔和计计数参数。第一个间隔的输出包含Linux总运行时间的指标。与其他性能命令比较,这可能是iostat最独特的功能。例如,以下是一个大部分时间处于空闲的系统的输出。可见,从启动以来hda设备已经读取大约9158MB(18755572*512/1024/1024)。Blk列是512字节块。不使用选项项,iosttat只显示覆覆盖启动以
31、以来全部时时间的一组组指标。CPU信息息包含基本本上和top一样的字字段。iosttat CCPU输出显示示在用户模模式中执行行、执行正正常进程、在在内核(系系统)模式式中执行,进进程等待I/O完成时处于于空闲和没没有等待进进程时处于于空闲的CPU时间的百百分比。CPU行是所有CPU的摘要。磁盘信息与与sar -d提供的信信息类似。输输出包括每每秒传输数数(tps)、每秒512字节块读取取数(Blk_readd/s)、每秒512字节块写写入数(Blk_wrtnn/s)和512字节块读读取(Blk_readd)和写入入(Blk_wrtnn)的总数数量。iostaat提供几个个用于定制制输出的开开关。最有有用的有: -c 只显示CPU行 -d 显示磁盘盘行 -k 以千字节节为单位显显示磁盘输输出 -t 在输出中包包括时间戳戳 -x 在输出中中包括扩展展的磁盘指指标这些选项可可以组合。iosttat -tk 55 2的输出是是:3.5 freeefree命命令输出内内存和交换换信息,与与top命令的作作用非常相相似。不使使用选项,free以千字节节为单位显显示信息:free命命令有少量量选项,推推荐使用-mt。-m开关使输输出以兆字字节为单位位,-t开关提供供一个合计计行: