




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、细说 Linux 系统优化-实践篇作为一名 linux 系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行,但是由于硬件问题、问题、网络环境等的复杂性 和多变性,导致对系统的优化变得异常复杂,如何定位性能问题出在哪个方面,是性能优化的一题, 本章从系统入手,重点讲述由于系统软、硬件配置不当可能造成的性能问题,并且给出了检测系统故障和优化性能的一般方法和流程。1 cpu 性能评估Cpu 是影响 Linux 性能的主要之一,下面先介绍几个查看 CPU 性能令。1.1 vms命令该命令可以显示关于系统各种资源之间相关性能的简要信息,这里主要用它来看 CPU 的一个负载情况。下面是
2、 vms命令在某个系统的输出结果:rootnode1 # vms2 3procsmemoryswap-io-system-cpurbswpdfreebuffcachesisobiboincsussyidwa st0001622408304670320019800000162240830467032001010102001100 000001622408304670320011100918019900对上面每项的输出解释如下:procsr 列表示运行和等待 cpu 时间片的进程数,这个值如果长期大于系统 CPU 的个数,说明 CPU,需要增加 CPU。b 列表示在等待资源的进程数,比如正在等待
3、I/O、或者内存交换等。memoryswpd 列表示切换到内存交换区的内存数量(以 k 为)。如果 swpd 的值不为 0,或者比较大,只要si、so 的值长期为 0,这种情况下一般不用担心,不会影响系统性能。free 列表示当前空闲的物理内存数量(以 k 为)buff 列表示 buffers cache 的内存数量,一般对块设备的读写才需要缓冲。cache 列表示 page cached 的内存数量,一般作为文件系统 cached,频繁的文件都会被 cached,如果 cache 值较大,说明 cached 的文件数较多,如果此时 IO 中bi 比较小,说明文件系统效率比较好。swapsi
4、列表示由磁盘调入内存,也就是内存进入内存交换区的数量。so 列表示由内存调入磁盘,也就是内存交换区进入内存的数量。一般情况下,si、so 的值都为 0,如果 si、so 的值长期不为 0,则表示系统内存。需要增加系统内存。IO 项显示磁盘读写状况Bi 列表示从块设备读入数据的总量(即读磁盘)(每秒 kb)。Bo 列表示写入到块设备的数据总量(即写磁盘)(每秒 kb)这里设置的 bi+bo 参考值为 1000,如果超过 1000,而且 wa 值较大,则表示系统磁盘 IO 有问题,应该考虑提高磁盘的读写性能。system 显示间隔内发生的中断数in 列表示在某一时间间隔中观测到的每秒设备中断数。c
5、s 列表示每秒产生的上下文切换次数。上面这 2 个值越大,会看到由内核消耗的 CPU 时间会越多。CPU 项显示了 CPU 的使用状态,此列是关注的重点。us 列显示了用户进程消耗的 CPU 时间百分比。us 的值比较高时,说明用户进程消耗的 cpu 时间多,但是如果长期大于 50%,就需要考虑优化程序或算法。sy 列显示了内核进程消耗的 CPU 时间百分比。Sy 的值较高时,说明内核消耗的 CPU 资源很多。根据经验,us+sy 的参考值为 80%,如果 us+sy 大于 80%说明可能存在 CPU 资源。id 列显示了 CPU 处在空闲状态的时间百分比。wa 列显示了 IO 等待所占用的
6、CPU 时间百分比。wa 值越高,说明 IO 等待越严重,根据经验,wa 的参考值为 20%,如果 wa 超过 20%,说明 IO 等待严重,引起 IO 等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘控制器的带宽瓶颈造成的(主要是块操作)。综上所述,在对 CPU 的评估中,需要重点注意的是 procs 项 r 列的值和 CPU 项中 us、sy 和id 列的值。1.2sar 命令检查 CPU 性能的第二个工具是 sar,sar 功能很强大,可以对系统的每个方面进行单独的统计,但是使用sar 命令会增加系统开销,不过这些开销是可以评估的,对系统的统计结果不会有很大影响。下面是 sa
7、r 命令对某个系统的 CPU 统计输出:rootwebserver # sar -u 3 5Linux 2.6.9-42.ELsmp(webserver)11/28/2008_i686_(8CPU)11:41:24AMCPU%user%nice%system%iowait%steal%idle11:41:27AMall0.880.000.290.000.0098.8311:41:30AMall0.130.000.170.210.0099.5011:41:33AMall0.040.000.040.000.0099.9211:41:36AMall0.290.000.130.000.0099.581
8、1:41:39AMall0.380.000.170.040.0099.41Average:all0.340.000.160.050.0099.45对上面每项的输出解释如下:%user 列显示了用户进程消耗的 CPU时间百分比。%nice 列显示了运行正常进程所消耗的 CPU 时间百分比。%system 列显示了系统进程消耗的 CPU 时间百分比。%iowait 列显示了 IO 等待所占用的 CPU 时间百分比%steal 列显示了在内存相对紧张的环境下 pagein 强制对不同的页面进行的 steal 操作。%idle 列显示了 CPU 处在空闲状态的时间百分比。这个输出是对系统整体 CPU
9、使用状况的统计,每项的输出都非常直观,并且最后一行 Average 是个汇总行,是上面统计信息的一个平均值。需要注意的一点是:第一行的统计信息中包含了 sar 本身的统计消耗,所以%user 列的值会偏高一点,不过,这不会对统计结果产生多大影响。在一个多 CPU 的系统中,如果程序使用了单线程,会出现这么一个现象,CPU 的整体使用率不高,但是系统应用却响应缓慢,这可能是由于程序使用单线程的原因,单线程只使用一个 CPU,导致这个 CPU 占用率为 100%,无法处理其它请求,而其它的 CPU 却闲置,这就导致 了整体 CPU 使用率不高,而应用缓慢 现象的发生 。针对这个问题,可以对系统的每
10、个 CPU 分开查询,统计每个 CPU 的使用情况:rootwebserver # sar -P 0 3 5Linux 2.6.9-42.ELsmp(webserver)11/29/2008_i686_(8CPU)06:29:33PMCPU%user%nice%system%iowait%steal%idle06:29:36PM03.000.000.330.000.0096.6706:29:39PM00.670.000.330.000.0099.0006:29:42PM00.000.000.330.000.0099.6706:29:45PM00.670.000.330.000.0099.000
11、6:29:48PM01.000.000.330.330.0098.34Average:01.070.000.330.070.0098.53这个输出是对系统的第一颗 CPU 的信息统计,需要注意的是,sar 中对 CPU 的计数是从 0 开始的,因此,“sar -P 0 3 5”表示对系统的第一颗 CPU 进行信息统计,“sar -P 4 3 5”则表示对系统的第五颗 CPU进行统计。依次类推。可以看出,上面的系统有八颗 CPU。1.3 ios命令ios指令主要用于统计磁盘 IO 状态,但是也能查看 CPU 的使用信息,它的局限性是只能显示系统所有 CPU 的平均信息,看下面的一个输出:root
12、webserver # ios-cLinux 2.6.9-42.ELsmp (webserver)11/29/2008_i686_(8 CPU)avg-cpu:%user%nice%system%iowait%steal%idle2.520.000.300.240.0096.96在这里,使用了“-c”参数,只显示系统 CPU 的统计信息,输出中每项代表的含义与 sar 命令的输出项完全相同,不再详述。1.4 uptime 命令uptime 是系统性能最常用的一个命令,主要用来统计系统当前的运行状况,输出的信息依次为:系统现在的时间、系统从上次开机到现在运行了多长时间、系统目前有多少登陆用户、系
13、统在一分钟内、五分钟内、十内的平均负载。看下面的一个输出:rootwebserver # uptime18:52:11 up 27 days, 19:44,2 users,load average: 0.12, 0.08, 0.08这里需要注意的是 load average 这个输出值,这三个值的大小一般不能大于系统 CPU 的个数,例如,本输出中系统有 8 个 CPU,如果 load average 的三个值长期大于 8 时,说明 CPU 很繁忙,负载很高,可能会影响系统性能,但是偶尔大于 8 时,倒不用担心,一般不会影响系统性能。相反,如果 load average 的输出值小于 CPU
14、的个数,则表示 CPU 还有空闲的时间片,比如本例中的输出,CPU 是非常空闲的。1.5 本节小结上面介绍了检查 CPU 使用状况的四个命令,通过这些命令需要了解的是:系统 CPU 是否出现性能瓶颈,也就是说,以上这些命令只能查看 CPU 是否繁忙,负载是否过大,但是无法知道 CPU 为何负载过大,因而,判断系统 CPU 出现问题后,要结合 top、ps 等命令进一步检查是由那些进程导致 CPU 负载过大的。引起 CPU资源紧缺的原因可能是应用程序不合理造成的,也可能是硬件资源匮乏引起的,所以,要具体问题具体分析,或者优化应用程序,或者增加系统 CPU 资源。2 内存性能评估内存的管理和优化是
15、系统性能优化的一个重要部分,内存资源的充足与否直接影响应用系统的使用性能,在进行内存优化之前,一定要熟悉 linux 的内存管理机制,这一点面的章节已经有深入讲述,本节的重点是如何通过系统命令linux 系统的内存使用状况。2.1 free 命令free 是linux 内存使用状况最常用的指令,看下面的一个输出:rootwebserver # free -mtotalusedfreesharedbufferscachedMem:8111718592502436299-/+ buffers/cache:6437468Swap:818908189“free m”表示以M 为查看内存使用情况,在这个
16、输出中重点关注的应该是free 列与 cached列的输出值,由输出可知,此系统共 8G 内存,系统空闲内存还有 925M,其中,Buffer Cache 占用了 243M,Page Cache 占用了 6299M,由此可知系统缓存了很多的文件和目录,而对于应用程序来说,可以使用的内存还有 7468M,当然这个 7468M 包含了 Buffer Cache 和 Page Cache 的值。在 swap 项可以看出,交换分区还未使用。所以从应用的角度来说,此系统内存资源还非常充足。一般有这样一个经验公式:应用程序可用内存/系统物理内存70%时,表示系统内存资源非常充足,不影响系统性能,应用程序可
17、用内存/系统物理内存20%时,表示系统内存资源紧缺,需要增加系统内存,20%应用程序可用内存/系统物理内存70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。free 命令还可以适时的内存的使用状况,使用“-s”参数可以在指定的时间段内不间断的内存的使用情况:rootwebserver # free -b -s 5totalusedfreesharedbufferscachedMem:75287060489771950080260112384 6601158656-/+ buffers/cache:667435008 7838466048Swap:163840totalusedf
18、reesharedbufferscachedMem:75269365769789644800260128768 6601142272-/+ buffers/cache:665665536 7840235520Swap:163840totalusedfreesharedbufferscachedMem:75239874569819136000260141056 6601129984-/+ buffers/cache:662716416 7843184640Swap:163840其中,“-b”表示以千字节(也就是 1024 字节为)来显示内存使用情况。2.2 通过 watch 与 free 相结合
19、动态内存状况watch 是一个非常有用令,几乎每个 linux版都带有这个工具,通过 watch,可以动态的命令的运行结果,省去手动执行的麻烦。可以在 watch 后面跟上需要运行令,watch 就会自动重复去运行这个命令,默认是 2 秒钟执行一次,并把执行的结果更新在屏幕上。例如:rootwebserver # watch -n 3 -d freeEvery 3.0s: freeSun Nov30 16:23:20 2008totalusedfreesharedbufferscachedMem:8306544734954895699602032966500024-/+ buffers/cac
20、he:6462287660316Swap:83858881608385728其中,“-n”指定重复执行的时间,“-d”表示显示变动。2.3 vms命令内存vms命令在系统内存方面功能强大,请看下面的一个输出:procsmemoryswapiosystemcpurbswpdfreebuffcachesisobiboincsussy idwa00906440227961556161325496320289054109528770150150090644042884155624132574823638721021064276782515对于内存的,在 vms中重点关注的是 swpd、si 和 so
21、行,从这个输出可以看出,此系统内存资源紧缺,swpd 占用了 900M 左右内存,si 和so 占用很大,而由于系统内存的紧缺,导致出现 15%左右的系统等待,此时增加系统的内存是必须要做的。2.4 sar -r 命令组合sar 命令也可以linux 的内存使用状况,可以通过“sar r”组合查看系统内存和交换空间的使用率。请看下面的一个输出:rootwebserver # sar -r 2 3Linux 2.6.9-42.ELsmp (webserver)11/30/2008_i686_(8 CPU)09:57:33PM kbmemfree kbmemused%memusedkbbuffer
22、skbcachedmit%commit09:57:35PM897988740855689.1924942864965327865564.7109:57:37PM898564740798089.1824942864965327842764.7009:57:39PM899196740734889.1724944064965207821324.69Average:898583740796189.1824943264965287843214.70其中:Kbmemfree 表示空闲物理内存大小,kbmemused 表示已使用的物理内存空间大小,%memused 表示已使用内存占总内存大小的百分比,kbb
23、uffers 和 kbcached 分别表示 Buffer Cache 和 Page Cache 的大小mit和%commit 分别表示应用程序当前使用的内存大小和使用百分比。可以看出 sar 的输出其实与 free 的输出完全对应,不过 sar 更加人性化,不但给出了内存使用量,还给出了内存使用的百分比以及统计的平均值。从%commit 项可知,此系统目前内存资源充足。2.5 本节小结上面介绍了内存常用的几个指令以及一些经验规则,其实现在的系统在内存方面出现的瓶颈已经很少,因为内存价格很低,充足的内存已经完全能满足应用程序和系统本身的需要,如果系统在内存方面出现瓶颈,很大的可能是应用程序本身
24、造成的。3 磁盘 I/O 性能评估在对磁盘 I/O 性能做评估之前,必须知道的几个方面是:熟悉 RAID方式,可以根据应用的不同,选择不同的 RAID 方式,例如,如果一个应用经常有大量的读操作,可以选择 RAID5 方式构建磁盘阵列数据,如果应用有大量的、频繁的写操作,可以选择 raid0存取方式,如果应用对数据安全要求很高,同时对读写也有要求的话,可以考虑 raid01 存取方式等等。尽可能用内存的读写代替直接磁盘 I/O,使频繁的文件或数据放入内存中进行操作处理,因为内存读写操作比直接磁盘读写的效率要高千倍。将经常进行读写的文件与长期不变的文件独立出来,分别放置到不同的磁盘设备上。对于写
25、操作频繁的数据,可以考虑使用设备代替文件系统。这里简要讲述下文件系统与设备的对比:使用设备的优点有:数据可以直接读写,不需要经过操作系统级的缓存,节省了内存资源,避免了内存资源争用。避免了文件系统级的开销,比如文件系统需要超级块、I-node 等。避免了操作系统的 cache 预读功能,减少了 I/O 请求。使用设备的缺点是:数据管理、空间管理不灵活,需要很专业的人来操作。其实设备的优点就是文件系统的缺点,反之也是如此,这就需要做出合理的规划和衡量,根据应用的需求,做出对应的策略。下面接着介绍对磁盘 IO 的评估标准。3.1 sar -d 命令组合通过“sar d”组合,可以对系统的磁盘 IO
26、 做一个基本的统计,请看下面的一个输出:rootwebserver # sar -d 2 3Linux 2.6.9-42.ELsmp(webserver)11/30/2008_i686_(8CPU)11:09:33PMDEVtpsrd_sec/swr_sec/savgrq-szavgqu-szawaitsvctm%util11:09:35PMdev8-00.000.000.000.000.000.000.000.0011:09:35PMDEVtpsrd_sec/swr_sec/savgrq-szavgqu-szawaitsvctm%util11:09:37PMdev8-01.000.0012.
27、0012.000.000.000.000.0011:09:37PMDEVtpsrd_sec/swr_sec/savgrq-szavgqu-szawaitsvctm%util11:09:39 PMdev8-01.990.0047.7624.000.000.500.250.05Average:DEVtpsrd_sec/swr_sec/savgrq-szavgqu-szawaitsvctm%utilAverage:dev8-01.000.0019.9720.000.000.330.170.02对上面每项的输出解释如下:DEV 表示磁盘设备名称。tps 表示每秒到物理磁盘的传送数,也就是每秒的 I/O
28、 流量。一个传送就是一个 I/O 请求,多个逻辑请求可以被合并为一个物理 I/O 请求。rd_sec/s 表示每秒从设备的扇区数(1 扇区=512 字节)。wr_sec/s 表示每秒写入设备的扇区数目。avgrq-sz 表示平均每次设备 I/O 操作的数据大小(以扇区为)。avgqu-sz 表示平均 I/O 队列长度。await 表示平均每次设备 I/O 操作的等待时间(以毫秒为)。svctm 表示平均每次设备 I/O 操作的服务时间(以毫秒为)。%util 表示一秒中有百分之几的时间用于 I/O 操作。Linux 中 I/O 请求系统与现实生活中超市购物排队系统有很多类似的地方,通过对超市购
29、物排队系统的理解,可以很快掌握 linux 中 I/O 运行机制。比如:avgrq-sz 类似与超市排队中每人所买东西的多少。avgqu-sz 类似与超市排队中时间内平均排队的人数。await 类似与超市排队中每人的等待时间。svctm 类似与超市排队中收银员的收款速度。%util 类似与超市收银台前有人排队的时间比例。对以磁盘 IO 性能,一般有如下评判标准:正常情况下 svctm 应该是小于 await 值的,而 svctm 的大小和磁盘性能有关,CPU、内存的负荷也会对svctm 值造成影响,过多的请求也会间接的导致 svctm 值的增加。await 值的大小一般取决与 svctm 的值
30、和 I/O 队列长度以及 I/O 请求模式,如果 svctm 的值与 await 很接近,表示几乎没有 I/O 等待,磁盘性能很好,如果 await 的值远高于 svctm 的值,则表示 I/O 队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。%util 项的值也是衡量磁盘 I/O 的一个重要指标,如果%util 接近 100%,表示磁盘产生的 I/O 请求太多,I/O 系统已经满负荷的在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能,可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题。3.2 iosd 命令组合通过“iosd”命令组合也可以查看系
31、统磁盘的使用状况,请看如下输出:rootwebserver #ios-d23Linux 2.6.9-42.ELsmp(webserver)12/01/2008_i686_(8CPU)Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtnsda1.872.58114.126479462286537372Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtnsda0.000.000.0000Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtnsda1.000.0012.00024对上
32、面每项的输出解释如下:Blk_read/s 表示每秒的数据块数。Blk_wrtn/s 表示每秒写入的数据块数。Blk_read 表示的所有块数Blk_wrtn 表示写入的所有块数。这里需要注意的一点是:上面输出的第一项是系统从启动以来到统计时的所有传输信息,从第二次输出的数据才代表在检测的时间段内系统的传输值。可以通过 Blk_read/s 和 Blk_wrtn/s 的值对磁盘的读写性能有一个基本的了解,如果 Blk_wrtn/s 值很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或者优化程序,如果 Blk_read/s 值很大,表示磁盘直接读取操作很多,可以将的数据放入内存中进行操作。对于这两
33、个选项的值没有一个固定的大小,根据系统应用的不同,会有不同的值,但是有一个规则还是可以遵循的:长期的、超大的数据读写,肯定是不正常的,这种情况一定会影响系统性能。“iosx”组合还提供了对每个磁盘的单独统计,如果不指定磁盘,默认是对所有磁盘进行统计,请看下面的一个输出:rootwebserver #ios-x /dev/sda2 3Linux 2.6.9-42.ELsmp(webserver)12/01/2008_i686_(8 CPU)avg-cpu:%user%nice %system %iowait%steal%idle2.450.000.300.240.0097.03Device: r
34、rqm/swrqm/sr/sw/srsec/swsec/savgrq-szavgqu-szawaitsvctm%utilsda0.0112.480.101.782.58114.0362.330.0738.391.300.24avg-cpu:%user%nice%system %iowait%steal%idle3.970.001.838.190.0086.14Device:rrqm/s wrqm/sr/sw/srsec/swsec/s avgrq-szavgqu-szawaitsvctm%utilsda0.00195.000.0018.000.001704.0094.670.042.500.1
35、10.20avg-cpu:%user%nice%system%iowait%steal%idle4.040.001.838.010.0086.18Device: rrqm/swrqm/sr/sw/srsec/swsec/s avgrq-szavgqu-szawaitsvctm%utilsda0.004.500.007.000.0092.0013.140.010.790.140.10这个输出基本与“sar d”相同,需明的几个选项的含义为:rrqm/s 表示每秒进行 merged 的读操作数目。wrqm/s 表示每秒进行 merge 的写操作数目。r/s 表示每秒完成读 I/O 设备的次数。w/
36、s 表示每秒完成写 I/O 设备的次数。rsec/s 表示每秒的扇区数。wsec/s 表示每秒写入的扇区数。3.3 vmsd 组合通过“vmsd”组合也可以查看磁盘的统计数据,情况下面的一个输出:rootwebserver # vms-d 3 2|grep sdadisk- reads writes IOtotalmergedsectorsmstotalmergedsectorsmscursecsda239588 2928264818621044442 453867832387680 29541081218602558006179disk- reads writes IOtotalmerged
37、sectorsmstotalmergedsectorsmscursecsda239588 292826481862 1044442 453868032387690 295410908 18602558106179这个输出显示了磁盘的 reads、writes 和 IO 的使用状况。3.4 本节小结上面主要讲解了对磁盘 I/O 的性能评估,其实衡量磁盘 I/O 好坏是多方面的,有应用程序本身的,也有硬件设计上的,还有系统自身配置等,要解决 I/O 的瓶颈,关键是要提高 I/O 子系统的执行效率。例如,首要要从应用程序上对磁盘读写进行优化,能够放到内存执行的操作,尽量不要放到磁盘,同时对磁盘方式进
38、行合理规划,选择适合自己的 RAID 存取方式,最后,在系统级别上,可以选择适合自身应用的文件系统,必要时使用设备提高读写性能。4 网络性能评估网络性能的好坏直接影响应用程序对外提供服务的稳定性和可靠性,网络性能,可以从以下几个方面进行管理和优化。4.1 通过命令检测网络的连通性如果发现网络反应 缓慢,或者连接中断,可以通过来测试网络的连通情况,请看下面的一个输出:rootwebserver #10.10.1.25410.10.1.254 (10.10.1.254) 56(84)bytes of data.64bytesfrom10.10.1.254:icmp_seq=0ttl=64time=
39、0.235ms64bytesfrom10.10.1.254:icmp_seq=1ttl=64time=0.164ms64bytesfrom10.10.1.254:icmp_seq=2ttl=64time=0.210ms64bytesfrom10.10.1.254:icmp_seq=3ttl=64time=0.178ms64bytesfrom10.10.1.254:icmp_seq=4ttl=64time=0.525ms64bytesfrom10.10.1.254:icmp_seq=5ttl=64time=0.571ms64bytesfrom10.10.1.254:icmp_seq=6ttl=6
40、4time=0.220ms 10.10.1.254sistics 7 packets transmitted,7 received, 0%packetloss, time6000msrtt min/avg/max/mdev =0.164/0.300/0.571/0.159 ms, pipe2在这个输出中,time 值显示了两台主机之间的网络延时情况,如果此值很大,则表示网络的延时很大,为毫秒。在这个输出的最后,是对上面输出信息的一个总结,packet loss 表示网络的丢包率,此值越小,表示网络的质量越高。4.2 通过 netsi 组合检测网络接口状况nets命令提供了网络接口的详细信息,请
41、看下面的输出:rootwebserver # nets-iKernelerface tableIface MTUMet RX-OKRX-ERR RX-DRP RX-OVRTX-OKTX-ERR TX-DRPTX-OVReth0150000000BMRUeth115000494902025000292358810000BMRUlo1643604190160100041901601000LRU对上面每项的输出解释如下:Iface 表示网络设备的接口名称。MTU 表示最大传输单元,字节。RX-OK/TX-OK 表示已经准确无误的接收/发送了多少数据包。RX-ERR/TX-ERR 表示接收/发送数据包
42、时产生了多少错误。RX-DRP/TX-DRP 表示接收/发送数据包时丢弃了多少数据包。RX-OVR/TX-OVR 表示由于误差而遗失了多少数据包。表示接口标记,其中:L:表示该接口是个回环设备。B:表示设置了广播地址。M:表示接收所有数据包。R:表示接口正在运行。U:表示接口处于活动状态。O:表示在该接口上禁用 arp。P:表示一个点到点的连接。正常情况下,RX-ERR/TX-ERR、RX-DRP/TX-DRP 和RX-OVR/TX-OVR 的值都应该为 0,如果这几个选项的值不为 0,并且很大,那么网络质量肯定有问题,网络传输性能也一定会下降。当网络传输存在问题是,可以检测网卡设备是否存在故
43、障,如果可能,可以升级为千兆网卡或者光纤网络,还可以检查网络部署环境是否合理。4.3 通过 netsr 组合检测系统的路由表信息在网络不通,或者网络异常时,首先想到的就是检查系统的路由表信息,“netsr”的输出结果与 route 命令的输出完全相同,请看下面的一个实例:rootwebserver #nets-rKernel IP routing tableDestinationGatewayGenmaskFlagsMSSWindowirttIface10.10.1.0*255.255.255.0U000eth0192.168.200.0*255.255.255.0U000eth1169.25
44、4.0.0*255.255.0.0U000eth1default10.10.1.2540.0.0.0UG000eth0关于输出中每项的具体含义,已经面章节进行过详细介绍,这里不再多讲,这里重点关注的是default 行对应的值,default 项表示系统的默认路由,对应的网络接口为 eth0。4.4 通过 sar n 组合显示系统的网络运行状态sar 提供四种不同的选项来显示网络统计信息,通过“-n”选项可以指定 4 个不同类型的开关:DEV、EDEV、SOCK 和 FULL。DEV 显示网络接口信息,EDEV 显示关于网络错误的统计数据,SOCK 显示套接字信息,FULL显示所有三个开关。请
45、看下面的一个输出:rootwebserver # sar -n DEV 23Linux 2.6.9-42.ELsmp(webserver)12/01/2008_i686_(8CPU)02:22:31PMIFACErxpck/stxpck/srxkB/stxkB/srxcmp/stxcmp/srxmcst/s02:22:33PMlo31.3431.3437.5337.530.000.000.0002:22:33PMeth0199.50279.6017.29344.120.000.000.0002:22:33PMeth15.474.987.030.360.000.000.0002:22:33PMs
46、it00.000.000.000.000.000.000.0002:22:33PMIFACErxpck/stxpck/srxkB/stxkB/srxcmp/stxcmp/srxmcst/s02:22:35PMlo67.6667.6674.3474.340.000.000.0002:22:35PMeth0159.70222.3919.74217.160.000.000.0002:22:35PMeth13.484.480.440.510.000.000.0002:22:35PMsit00.000.000.000.000.000.000.0002:22:35PMIFACErxpck/stxpck/s
47、rxkB/stxkB/srxcmp/stxcmp/srxmcst/s02:22:37PMlo4.524.529.259.250.000.000.0002:22:37PMeth0102.51133.6720.67116.140.000.000.0002:22:37PMeth127.1467.342.4289.260.000.000.0002:22:37PMsit00.000.000.000.000.000.000.00Average:IFACErxpck/stxpck/srxkB/stxkB/srxcmp/stxcmp/srxmcst/sAverage:lo34.6134.6140.4840.4
48、80.000.000.00Average:eth0154.08212.1519.23226.170.000.000.00Average:eth111.9825.463.3029.850.000.000.00Average:sit00.000.000.000.000.000.000.00对上面每项的输出解释如下:IFACE 表示网络接口设备。rxpck/s 表示每秒钟接收的数据包大小。txpck/s 表示每秒钟发送的数据包大小。rxkB/s 表示每秒钟接收的字节数。txkB/s 表示每秒钟发送的字节数。rxcmp/s 表示每秒钟接收的压缩数据包。txcmp/s 表示每秒钟发送的压缩数据包。rxm
49、cst/s 表示每秒钟接收的多播数据包。通过“sar n”的输出,可以清楚的显示网络接口发送、接收数据的统计信息。此外还可以通过“sar -nEDEV 2 3”来统计网络错误信息等。4.5 小结本节通过几个常用的网络命令介绍了对网络性能的评估,事实上,网络问题是简单而且容易处理的,只要根据上面给出令,一般都能迅速定位问题。解决问题的方法一般是增加网络带宽,或者优化网络部署环境。除了上面介绍的几个命令外,排查网络问题经常用到令还有 traceroute,主要用于数据包的传输路径,还有 nslookup 命令,主要用于判断 DNS信息。CPU 利用率:Linux 以及大多数基于 UNIX 的操作系
50、统都提供了一条命令来显示系统的平均负载(load average):具体的讲,平均负载代表了在 1min,5min 和 15min 内可以运行的任务平均数。可运行的任务包括当前正在运行的任务以及虽然可以运行但正在等待某个处理器空闲的任务。我这里只有一个 CPU,且 0.31, 0.46,0.21 均小于 1.00,这表明处理器仍拥有额外的空闲周期。同理如果有两个 CPU,且 load average均小于 2.00 的话,这同样表明处理器拥有额外的空闲周期。然后负载平均值单独并不能说明所有问题。为了更深入地探究处理器的使用情况,下面介绍几种工具可以提供许多关于 CPU 利用的不同理解:1) v
51、ms一个实时性能监视工具。该工具提供了有助于发现系统异常活动的数据。上面令是每 1s 输出 vms的信息,共 10 次,具体说明如下:Procs:提供了在生成时正在运行的进程数目(r)以及被阻塞的进程数目(b)Memory: 提供了换出内存(swpd),空闲内存(free),IO 数据结构的缓存区缓存(buff)以及从磁盘文件的内存缓存(cache)的容量。为 KB.Swap:提供了从磁盘上换入内存容量(si)以及换出到磁盘上的内存量(so),为 KB/s.so 反应了当数据被换出至交换区时 kswapd 的情况,而 si 则反映了当页面被换回到物理内存时发生页面错误的情况。io:提供了从设备
52、读入的块数(bi)以及写出到设备上的块数(bo),System: 提供了每秒的中断数目(in)和上下文切换数目(cs).为KB/s。Cpu:提供了用户(us),系统(sy),真正空闲(id)以及等待 I/O 完成(wa)在 cpu 总时间中所占的百分比。2) top 与 gtop它可以显示哪些进程是活跃的以及哪些进程消耗的处理时间或内存最多。top 命令对于所有正在运行的进系统负载提供不断更新的概览信息。包括 cpu 负载,内存使用以及每个进程的内存使用情况。默认情况下,top 输出经常刷新,且把任务基于 CPU 占用时间的百分比排序。对图详细解释如下:第一行:显示正常运行的时间,包括当前时间
53、,系统上次重启后已运行的时间和当前用户数量以及 3 个用于表示在先前 1min,5min,15min 内准备运行的平均处理器数目的平均负荷值。第二行:给出进程的统计信息。包括正在运行的进程总数。具体还有正在运行的,睡眠的,僵尸的和已停止进程的数目。第三和四行:显示各个的统计信息。包括用户进程,系统进程,niced 进程(优先进程)以及空闲进程所占用的 cpu 的时间比。第五行提供内存统计信息。包括内存总量,已用内存,空闲内存,不同进程共享的内存以及缓存内存。第六行显示虚存或交换活动的统计信息,包括交换空间总量,已经使用的,空闲的和缓存空间大小。 具体到统计信息的每一行,看下边:: 每个进程的
54、ID;USER: 每个进程所有者的用户名; PR: 每个进程的优先级别;NI: 该进程的优先级值; VIRT: 虚拟内存;RES: 常驻内存; SHR: 共享内存;%CPU: 该进程自最近一次刷新以来所占用的 CPU 时间和总时间的百分比;%MEM: 内存使用率,该进程占用的物理内存占总内存的百分比;TIME: 该进程自启动以来所占用的总 CPU 时间。如果进入的是累计模式,那么该时间还包括这个进程子进程所占用的时间。且标题会变成 CTIME;D: 该进程令名称,如果一行显示不下,则会进行截取。内存中的进程会有一个完整令行. 3)sar它收集包括 CPU 利用率,上下文切换和中断速率,页换入和
55、页换出速率,共享内存的使用情况,缓冲区使用情况以及网络使用情况。它常常用于确定事件的时间,也可用于标识特定的系统行为变化。Sar 可以使用更短的时间间隔或固定数目的时间间隔来输出信息,sar 可以为所收集的许多数据点提供平均信息。sar 命令的选项很多,下面只列出常用选项:-A:所有的总和。-u:CPU 利用率-v:进程、I 节点、文件和锁表状态。-d:硬盘使用。-r:没有使用的内存页面和硬盘块。-g:串口 I/O 的情况。-b:缓冲区使用情况。-a:文件读写情况。-c:系统调用情况。-R:进程的活动情况。-y:终端设备活动情况。-w:系统交换活动。以上每 2 秒采样一次,连续采样 5 次,观
56、察 CPU的使用情况,并将采样结果以二进制形式存入当前目录下的文件 zhou 中。如果要查看二进制文件 zhou 中的内容,则需键入如下 sar 命令:# sar -u -f zhou可见,sar 命令即能实时采样,又能对以往的采样结果进行查询。在显示内容包括:Cll 表示统计信息为所有 CPU 的平均值。%user 显示在用户级别(application)运行使用 CPU 总时间的百分比。%nice 显示在用户级别,用于 nice 操作,所占用 CPU 总时间的百分比。%system 在级别(kernel)运行所使用 CPU 总时间的百分比。%iowait 显示用于等待 I/O 操作占用 C
57、PU 总时间的百分比。%steal 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。%idle 显示 CPU 空闲时间占用 CPU 总时间的百分比。内存利用率:1)/proc/meminfo 与/proc/slabinfo这两个文件可以捕获物理内存的状况。要理解内核内存使用的情况,可以查看/proc/slabinfo 文件。MemTotal: 所有可用 RAM 大小(即物理内存减去一些预留位和内核的二进制代码大小)MemFree: LowFree 与 HighFree 的总和,被系统留着未使用的内存Buffers: 用来给文件做缓冲大小Cached: 被高
58、速缓冲器(cache memory)用的内存的大小(等于 diskcache minus SwapCache)SwapCached:被高速缓冲器(cache memory)用的交换空间的大小已经被交换出来的内存,但仍然被存放在 swapfile 中。用来在需要的时候很快的被替换而不需要再次打开 I/O 端口。Active: 在活跃使用中的缓冲或高速缓冲器页面文件的大小,除非非常必要否则不会被移作他用.Inactive: 在不经常使用中的缓冲或高速缓冲器页面文件的大小,可能被用于其他途径. HighTotal:HighFree: 该区域不是直接到内核空间。内核必须使用不同LowTotal:法使用
59、该段内存。LowFree: 低位可以达到内存一样的作用,而且它还能够被内核用来一些自己的数据结构。SwapTotal: 交换空间的总大小 SwapFree: 未被使用交换空间的大小 Dirty: 等待被写回到磁盘的内存大小。Writeback: 正在被写回到磁盘的内存大小。AnonPages:未页的内存大小Mapped: 设备和文件等的大小。Slab: 内核数据结构缓存的大小,可以减少申请和SReclaimable:可收回 Slab 的大小SUnreclaim:不可收回 Slab 的大小(SUnreclaim+SReclaimableSlab)PageTables:管理内存分页页面的索引表的大
60、小。 NFS_Unstable:不稳定页表的大小 VmallocTotal: 可以vmalloc 虚拟内存大小VmallocUsed: 已经被使用的虚拟内存大小。内存带来的消耗。这是其中的部分截图:第一列:内核数据结构的名称。第二列:活跃的第三列:总数第四列:每个数据结构占用大小第五列:至少拥有一个活动对象的页面数第六列:已经分配页面的总数第七列:每个 slab 结构所分配的页面数2)ps获取特定进程中的内存使用情况.ps 的参数非常多,-A 列出所有的行程-w 显示加宽可以显示较多的资讯-au 显示较详细的资讯-aux 显示所有包含其他使用者的行程在此仅列出几个常用的参数并大略介绍含义说明:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第六单元说课课件下载
- 出口委托代理协议书范本
- 出轨家暴协议书范本
- 抽签互换协议书范本
- 定制戒指协议书范本大全
- 房产委托拍卖协议书范本
- 民宿房东分成协议书范本
- 心理健康课件网站
- 空分装置安全管理课件
- 二零二五年度新型城镇化施工合同编号
- 麦肯锡《业绩评估操作手册》
- 灾后心理危机干预
- 化学锚栓承载力计算
- 教育培训机构公司简介范文范本
- GB/T 7409.4-2023同步电机励磁系统第4部分:中小型同步电机励磁系统技术要求
- 公司合同管理知识培训课件
- 看歌词猜歌名
- 中国思想史 马工程329P
- DB65T 2887-2008林业用保水剂应用通用技术条件
- GB/T 41813.1-2022信息技术智能语音交互测试方法第1部分:语音识别
- SB/T 10569-2010冷藏库门
评论
0/150
提交评论