文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

老牌运维教你如何快速分析Linux服务器的性能问题

2024-12-24 22:28

关注

[[278170]]

1 cpu性能评估

Cpu是影响Linux性能的主要因素之一,下面先介绍几个查看CPU性能的命令。

1.1 vmstat命令

该命令可以显示关于系统各种资源之间相关性能的简要信息,这里我们主要用它来看CPU的一个负载情况。

下面是vmstat命令在某个系统的输出结果:

  1. [root@node1 ~]# vmstat 2 3 
  2. procs ———–memory———- —swap– —–io—- –system– —–cpu—— 
  3.  r b swpd free buff cache si so bi bo in cs us sy id wa st 
  4.  0 0 0 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0 
  5.  0 0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0 
  6.  0 0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0 

对上面每项的输出解释如下:

  1.  procs 
  2.  
  3.  r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU不足,需要增加CPU。 
  4.  
  5.  b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。 
  6.  
  7.  memory 
  8.  
  9.  swpd列表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能。 
  10.  
  11.  free列表示当前空闲的物理内存数量(以k为单位) 
  12.  
  13.  buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲。 
  14.  
  15.  cache列表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。 
  16.  
  17.  swap 
  18.  
  19.  si列表示由磁盘调入内存,也就是内存进入内存交换区的数量。 
  20.  
  21.  so列表示由内存调入磁盘,也就是内存交换区进入内存的数量。 

一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存。

  1.  IO项显示磁盘读写状况 
  2.  
  3.  Bi列表示从块设备读入数据的总量(即读磁盘)(每秒kb)。 
  4.  
  5.  Bo列表示写入到块设备的数据总量(即写磁盘)(每秒kb) 

这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大,则表示系统磁盘IO有问题,应该考虑提高磁盘的读写性能。

  1.  system 显示采集间隔内发生的中断数 
  2.  in列表示在某一时间间隔中观测到的每秒设备中断数。 
  3.  cs列表示每秒产生的上下文切换次数。 

上面这2个值越大,会看到由内核消耗的CPU时间会越多。

  1.  CPU项显示了CPU的使用状态,此列是我们关注的重点。 
  2.  us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法。 
  3.  sy列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。 

根据经验,us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。

  1.  id 列显示了CPU处在空闲状态的时间百分比。 
  2.  wa列显示了IO等待所占用的CPU时间百分比。wa值越高,说明IO等待越严重,根据经验,wa的参考值为20%,如果wa超过20%,说明IO等待严重,引起IO等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘控制器的带宽瓶颈造成的(主要是块操作)。 

综上所述,在对CPU的评估中,需要重点注意的是procs项r列的值和CPU项中us、sy和id列的值。

1.2 sar命令

检查CPU性能的第二个工具是sar,sar功能很强大,可以对系统的每个方面进行单独的统计,但是使用sar命令会增加系统开销,不过这些开销是可以评估的,对系统的统计结果不会有很大影响。

下面是sar命令对某个系统的CPU统计输出:

  1. [root@webserver ~]# sar -u 3 5 
  2. Linux 2.6.9-42.ELsmp (webserver) 11/28/2008 _i686_ (8 CPU) 
  3.     11:41:24 AM CPU %user %nice %system %iowait %steal %idle 
  4. 11:41:27 AM all 0.88 0.00 0.29 0.00 0.00 98.83 
  5. 11:41:30 AM all 0.13 0.00 0.17 0.21 0.00 99.50 
  6. 11:41:33 AM all 0.04 0.00 0.04 0.00 0.00 99.92 
  7. 11:41:36 AM all 0.29 0.00 0.13 0.00 0.00 99.58 
  8. 11:41:39 AM all 0.38 0.00 0.17 0.04 0.00 99.41 
  9. Average: all 0.34 0.00 0.16 0.05 0.00 99.45 

对上面每项的输出解释如下:

  1.  %user列显示了用户进程消耗的CPU 时间百分比。 
  2.  
  3.  %nice列显示了运行正常进程所消耗的CPU 时间百分比。 
  4.  
  5.  %system列显示了系统进程消耗的CPU时间百分比。 
  6.  
  7.  %iowait列显示了IO等待所占用的CPU时间百分比 
  8.  
  9.  %steal列显示了在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作 。 
  10.  
  11.  %idle列显示了CPU处在空闲状态的时间百分比。 

这个输出是对系统整体CPU使用状况的统计,每项的输出都非常直观,并且最后一行Average是个汇总行,是上面统计信息的一个平均值。

需要注意的一点是:第一行的统计信息中包含了sar本身的统计消耗,所以%user列的值会偏高一点,不过,这不会对统计结果产生多大影响。

在一个多CPU的系统中,如果程序使用了单线程,会出现这么一个现象,CPU的整体使用率不高,但是系统应用却响应缓慢,这可能是由于程序使用单线程的原因,单线程只使用一个CPU,导致这个CPU占用率为100%,无法处理其它请求,而其它的CPU却闲置,这就导致 了整体CPU使用率不高,而应用缓慢 现象的发生 。

针对这个问题,可以对系统的每个CPU分开查询,统计每个CPU的使用情况:

  1. [root@webserver ~]# sar -P 0 3 5 
  2. Linux 2.6.9-42.ELsmp (webserver) 11/29/2008 _i686_ (8 CPU) 
  3.     06:29:33 PM CPU %user %nice %system %iowait %steal %idle 
  4. 06:29:36 PM 0 3.00 0.00 0.33 0.00 0.00 96.67 
  5. 06:29:39 PM 0 0.67 0.00 0.33 0.00 0.00 99.00 
  6. 06:29:42 PM 0 0.00 0.00 0.33 0.00 0.00 99.67 
  7. 06:29:45 PM 0 0.67 0.00 0.33 0.00 0.00 99.00 
  8. 06:29:48 PM 0 1.00 0.00 0.33 0.33 0.00 98.34 
  9. Average: 0 1.07 0.00 0.33 0.07 0.00 98.53 

这个输出是对系统的第一颗CPU的信息统计,需要注意的是,sar中对CPU的计数是从0开始的,因此,“sar -P 0 3 5”表示对系统的第一颗CPU进行信息统计,“sar -P 4 3 5”则表示对系统的第五颗CPU进行统计。依次类推。可以看出,上面的系统有八颗CPU。

1.3 iostat命令

iostat指令主要用于统计磁盘IO状态,但是也能查看CPU的使用信息,它的局限性是只能显示系统所有CPU的平均信息,看下面的一个输出:

  1. [root@webserver ~]# iostat -c 
  2. Linux 2.6.9-42.ELsmp (webserver) 11/29/2008 _i686_ (8 CPU) 
  3.     avg-cpu: %user %nice %system %iowait %steal %idle 
  4.  2.52 0.00 0.30 0.24 0.00 96.96 

在这里,我们使用了“-c”参数,只显示系统CPU的统计信息,输出中每项代表的含义与sar命令的输出项完全相同,不再详述。

1.4 uptime命令

uptime是监控系统性能最常用的一个命令,主要用来统计系统当前的运行状况,输出的信息依次为:系统现在的时间、系统从上次开机到现在运行了多长时间、系统目前有多少登陆用户、系统在一分钟内、五分钟内、十五分钟内的平均负载。看下面的一个输出:

  1. [root@webserver ~]# uptime 
  2.  18: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的个数,则表示CPU还有空闲的时间片,比如本例中的输出,CPU是非常空闲的。

1.5 本节小结

上面介绍了检查CPU使用状况的四个命令,通过这些命令需要了解的是:系统CPU是否出现性能瓶颈,也就是说,以上这些命令只能查看CPU是否繁忙,负载是否过大,但是无法知道CPU为何负载过大,因而,判断系统CPU出现问题后,要结合top、ps等命令进一步检查是由那些进程导致CPU负载过大的。引起CPU资源紧缺的原因可能是应用程序不合理造成的,也可能是硬件资源匮乏引起的,所以,要具体问题具体分析,或者优化应用程序,或者增加系统CPU资源。

2 内存性能评估

内存的管理和优化是系统性能优化的一个重要部分,内存资源的充足与否直接影响应用系统的使用性能,在进行内存优化之前,一定要熟悉linux的内存管理机制,这一点我们在前面的章节已经有深入讲述,本节的重点是如何通过系统命令监控linux系统的内存使用状况。

2.1 free 命令

free是监控linux内存使用状况最常用的指令,看下面的一个输出:

  1. [root@webserver ~]# free -m 
  2.  total used free shared buffers cached 
  3. Mem: 8111 7185 925 0 243 6299 
  4. -/+ buffers/cache: 643 7468 
  5. Swap: 8189 0 8189 

“free –m”表示以M为单位查看内存使用情况,在这个输出中,我们重点关注的应该是free列与cached列的输出值,由输出可知,此系统共8G内存,系统空闲内存还有925M,其中,Buffer Cache占用了243M,Page Cache占用了6299M,由此可知系统缓存了很多的文件和目录,而对于应用程序来说,可以使用的内存还有7468M,当然这个7468M包含了Buffer Cache和Page Cache的值。在swap项可以看出,交换分区还未使用。所以从应用的角度来说,此系统内存资源还非常充足。

一般有这样一个经验公式:应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能,应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存,20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。

free命令还可以适时的监控内存的使用状况,使用“-s”参数可以在指定的时间段内不间断的监控内存的使用情况:

  1. [root@webserver ~]# free -b -s 5 
  2.  total used free shared buffers cached 
  3. Mem: 8505901056 7528706048 977195008 0 260112384 6601158656 
  4. -/+ buffers/cache: 667435008 7838466048 
  5. Swap: 8587149312 163840 8586985472 
  6.      total used free shared buffers cached 
  7. Mem: 8505901056 7526936576 978964480 0 260128768 6601142272 
  8. -/+ buffers/cache: 665665536 7840235520 
  9. Swap: 8587149312 163840 8586985472 
  10.      total used free shared buffers cached 
  11. Mem: 8505901056 7523987456 981913600 0 260141056 6601129984 
  12. -/+ buffers/cache: 662716416 7843184640 
  13. Swap: 8587149312 163840 8586985472 

其中,“-b”表示以千字节(也就是1024字节为单位)来显示内存使用情况。

2.2 通过watch与free相结合动态监控内存状况

watch是一个非常有用的命令,几乎每个linux发行版都带有这个工具,通过watch,可以动态的监控命令的运行结果,省去手动执行的麻烦。

可以在watch后面跟上需要运行的命令,watch就会自动重复去运行这个命令,默认是2秒钟执行一次,并把执行的结果更新在屏幕上。例如:

  1. [root@webserver ~]# watch -n 3 -d free 
  2.  Every 3.0s: free Sun Nov 30 16:23:20 2008 
  3.      total used free shared buffers cached 
  4. Mem: 8306544 7349548 956996 0 203296 6500024 
  5. -/+ buffers/cache: 646228 7660316 
  6. Swap: 8385888 160 8385728 

其中,“-n”指定重复执行的时间,“-d”表示高亮显示变动。

2.3 vmstat命令监控内存

vmstat命令在监控系统内存方面功能强大,请看下面的一个输出:

  1. procs ———–memory———- —swap– —–io—- –system– —-cpu—- 
  2.  r b swpd free buff cache si so bi bo in cs us sy id wa 
  3.  0 0 906440 22796 155616 1325496 340 180 2 4 1 4 80 0 10 10 
  4.  0 0 906440 42796 155616 1325496 320 289 0 54 1095 287 70 15 0 15 
  5.  0 0 906440 42884 155624 1325748 236 387 2 102 1064 276 78 2 5 15 

对于内存的监控,在vmstat中重点关注的是swpd、si和so行,从这个输出可以看出,此系统内存资源紧缺,swpd占用了900M左右内存,si和so占用很大,而由于系统内存的紧缺,导致出现15%左右的系统等待,此时增加系统的内存是必须要做的。

2.4 sar -r命令组合

sar命令也可以监控linux的内存使用状况,可以通过“sar –r”组合查看系统内存和交换空间的使用率。请看下面的一个输出:

  1. [root@webserver ~]# sar -r 2 3 
  2. Linux 2.6.9-42.ELsmp (webserver) 11/30/2008 _i686_ (8 CPU) 
  3.     09:57:33 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 
  4. 09:57:35 PM 897988 7408556 89.19 249428 6496532 786556 4.71 
  5. 09:57:37 PM 898564 7407980 89.18 249428 6496532 784276 4.70 
  6. 09:57:39 PM 899196 7407348 89.17 249440 6496520 782132 4.69 
  7. Average: 898583 7407961 89.18 249432 6496528 784321 4.70 

其中:

Kbmemfree表示空闲物理内存大小,kbmemused表示已使用的物理内存空间大小,%memused表示已使用内存占总内存大小的百分比,kbbuffers和kbcached分别表示Buffer Cache和Page Cache的大小,kbcommit和%commit分别表示应用程序当前使用的内存大小和使用百分比。

可以看出sar的输出其实与free的输出完全对应,不过sar更加人性化,不但给出了内存使用量,还给出了内存使用的百分比以及统计的平均值。从%commit项可知,此系统目前内存资源充足。

2.5 本节小结

上面介绍了内存监控常用的几个指令以及一些经验规则,其实现在的系统在内存方面出现的瓶颈已经很少,因为内存价格很低,充足的内存已经完全能满足应用程序和系统本身的需要,如果系统在内存方面出现瓶颈,很大的可能是应用程序本身的问题造成的。

3 磁盘I/O性能评估

在对磁盘I/O性能做评估之前,必须知道的几个方面是:

使用裸设备的优点有:

使用裸设备的缺点是:

其实裸设备的优点就是文件系统的缺点,反之也是如此,这就需要我们做出合理的规划和衡量,根据应用的需求,做出对应的策略。

下面接着介绍对磁盘IO的评估标准。

3.1 sar -d命令组合

通过“sar –d”组合,可以对系统的磁盘IO做一个基本的统计,请看下面的一个输出:

  1. [root@webserver ~]# sar -d 2 3 
  2. Linux 2.6.9-42.ELsmp (webserver) 11/30/2008 _i686_ (8 CPU) 
  3.     11:09:33 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 
  4. 11:09:35 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
  5.     11:09:35 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 
  6. 11:09:37 PM dev8-0 1.00 0.00 12.00 12.00 0.00 0.00 0.00 0.00 
  7.     11:09:37 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 
  8. 11:09:39 PM dev8-0 1.99 0.00 47.76 24.00 0.00 0.50 0.25 0.05 
  9.     Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 
  10. Average: dev8-0 1.00 0.00 19.97 20.00 0.00 0.33 0.17 0.02 

对上面每项的输出解释如下:

Linux中I/O请求系统与现实生活中超市购物排队系统有很多类似的地方,通过对超市购物排队系统的理解,可以很快掌握linux中I/O运行机制。比如:

avgrq-sz类似与超市排队中每人所买东西的多少。

avgqu-sz类似与超市排队中单位时间内平均排队的人数。

await类似与超市排队中每人的等待时间。

svctm类似与超市排队中收银员的收款速度。

%util类似与超市收银台前有人排队的时间比例。

对以磁盘IO性能,一般有如下评判标准:

正常情况下svctm应该是小于await值的,而svctm的大小和磁盘性能有关,CPU、内存的负荷也会对svctm值造成影响,过多的请求也会间接的导致svctm值的增加。

await值的大小一般取决与svctm的值和I/O队列长度以及I/O请求模式,如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。

%util项的值也是衡量磁盘I/O的一个重要指标,如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能,可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题。

3.2 iostat –d命令组合

通过“iostat –d”命令组合也可以查看系统磁盘的使用状况,请看如下输出:

  1. [root@webserver ~]# iostat -d 2 3 
  2. inux 2.6.9-42.ELsmp (webserver) 12/01/2008 _i686_ (8 CPU) 
  3. Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn 
  4. da 1.87 2.58 114.12 6479462 286537372 
  5. Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn 
  6. da 0.00 0.00 0.00 0 0 
  7. Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn 
  8. da 1.00 0.00 12.00 0 24 

对上面每项的输出解释如下:

这里需要注意的一点是:上面输出的第一项是系统从启动以来到统计时的所有传输信息,从第二次输出的数据才代表在检测的时间段内系统的传输值。

可以通过Blk_read/s和Blk_wrtn/s的值对磁盘的读写性能有一个基本的了解,如果Blk_wrtn/s值很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或者优化程序,如果Blk_read/s值很大,表示磁盘直接读取操作很多,可以将读取的数据放入内存中进行操作。对于这两个选项的值没有一个固定的大小,根据系统应用的不同,会有不同的值,但是有一个规则还是可以遵循的:长期的、超大的数据读写,肯定是不正常的,这种情况一定会影响系统性能。

“iostat –x”组合还提供了对每个磁盘的单独统计,如果不指定磁盘,默认是对所有磁盘进行统计,请看下面的一个输出:

  1. [root@webserver ~]# iostat -x /dev/sda 2 3 
  2. Linux 2.6.9-42.ELsmp (webserver) 12/01/2008 _i686_ (8 CPU) 
  3.     avg-cpu: %user %nice %system %iowait %steal %idle 
  4.  2.45 0.00 0.30 0.24 0.00 97.03 
  5.     Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util 
  6. sda 0.01 12.48 0.10 1.78 2.58 114.03 62.33 0.07 38.39 1.30 0.24 
  7.     avg-cpu: %user %nice %system %iowait %steal %idle 
  8.  3.97 0.00 1.83 8.19 0.00 86.14 
  9.     Device:rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util 
  10. sda 0.00 195.00 0.00 18.00 0.00 1704.00 94.67 0.04 2.50 0.11 0.20 
  11.     avg-cpu: %user %nice %system %iowait %steal %idle 
  12.  4.04 0.00 1.83 8.01 0.00 86.18 
  13.     Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util 
  14. sda 0.00 4.50 0.00 7.00 0.00 92.00 13.14 0.01 0.79 0.14 0.10 

这个输出基本与“sar –d”相同,需要说明的几个选项的含义为:

3.3 vmstat –d组合

通过“vmstat –d”组合也可以查看磁盘的统计数据,情况下面的一个输出:

  1. [root@webserver ~]# vmstat -d 3 2|grep sda 
  2. disk- ————reads———— ————writes———– —–IO—— 
  3.  total merged sectors ms total merged sectors ms cur sec 
  4. sda 239588 29282 6481862 1044442 4538678 32387680 295410812 186025580 0 6179 
  5. disk- ————reads———— ————writes———– —–IO—— 
  6.  total merged sectors ms total merged sectors ms cur sec 
  7. sda 239588 29282 6481862 1044442 4538680 32387690 295410908 186025581 0 6179 

这个输出显示了磁盘的reads、writes和IO的使用状况。

3.4 本节小结

上面主要讲解了对磁盘I/O的性能评估,其实衡量磁盘I/O好坏是多方面的,有应用程序本身的,也有硬件设计上的,还有系统自身配置的问题等,要解决I/O的瓶颈,关键是要提高I/O子系统的执行效率。例如,首要要从应用程序上对磁盘读写进行优化,能够放到内存执行的操作,尽量不要放到磁盘,同时对磁盘存储方式进行合理规划,选择适合自己的RAID存取方式,最后,在系统级别上,可以选择适合自身应用的文件系统,必要时使用裸设备提高读写性能。

4 网络性能评估

网络性能的好坏直接影响应用程序对外提供服务的稳定性和可靠性,监控网络性能,可以从以下几个方面进行管理和优化。

4.1 通过ping命令检测网络的连通性

如果发现网络反应 缓慢,或者连接中断,可以通过ping来测试网络的连通情况,请看下面的一个输出:

  1. [root@webserver ~]# ping 10.10.1.254 
  2. PING 10.10.1.254 (10.10.1.254) 56(84) bytes of data. 
  3. 64 bytes from 10.10.1.254: icmp_seq=0 ttl=64 time=0.235 ms 
  4. 64 bytes from 10.10.1.254: icmp_seq=1 ttl=64 time=0.164 ms 
  5. 64 bytes from 10.10.1.254: icmp_seq=2 ttl=64 time=0.210 ms 
  6. 64 bytes from 10.10.1.254: icmp_seq=3 ttl=64 time=0.178 ms 
  7. 64 bytes from 10.10.1.254: icmp_seq=4 ttl=64 time=0.525 ms 
  8. 64 bytes from 10.10.1.254: icmp_seq=5 ttl=64 time=0.571 ms 
  9. 64 bytes from 10.10.1.254: icmp_seq=6 ttl=64 time=0.220 ms 
  10. — 10.10.1.254 ping statistics — 
  11. 7 packets transmitted, 7 received, 0% packet loss, time 6000ms 
  12. rtt min/avg/max/mdev = 0.164/0.300/0.571/0.159 ms, pipe 2 

在这个输出中,time值显示了两台主机之间的网络延时情况,如果此值很大,则表示网络的延时很大,单位为毫秒。在这个输出的最后,是对上面输出信息的一个总结,packet loss表示网络的丢包率,此值越小,表示网络的质量越高。

4.2 通过netstat –i组合检测网络接口状况

netstat命令提供了网络接口的详细信息,请看下面的输出:

  1. [root@webserver ~]# netstat -i 
  2. Kernel Interface table 
  3. Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg 
  4. eth0 1500 0 1313129253 0 0 0 1320686497 0 0 0 BMRU 
  5. eth1 1500 0 494902025 0 0 0 292358810 0 0 0 BMRU 
  6. lo 16436 0 41901601 0 0 0 41901601 0 0 0 LRU 

对上面每项的输出解释如下:

  1.  Iface表示网络设备的接口名称。 
  2.  MTU表示最大传输单元,单位字节。 
  3.  RX-OK/TX-OK表示已经准确无误的接收/发送了多少数据包。 
  4.  RX-ERR/TX-ERR表示接收/发送数据包时产生了多少错误。 
  5.  RX-DRP/TX-DRP表示接收/发送数据包时丢弃了多少数据包。 
  6.  RX-OVR/TX-OVR表示由于误差而遗失了多少数据包。 
  7.  Flg表示接口标记,其中: 
  8.  L:表示该接口是个回环设备。 
  9.  B:表示设置了广播地址。 
  10.  M:表示接收所有数据包。 
  11.  R:表示接口正在运行。 
  12.  U:表示接口处于活动状态。 
  13.  O:表示在该接口上禁用arp。 
  14.  P:表示一个点到点的连接。 

正常情况下,RX-ERR/TX-ERR、RX-DRP/TX-DRP和RX-OVR/TX-OVR的值都应该为0,如果这几个选项的值不为0,并且很大,那么网络质量肯定有问题,网络传输性能也一定会下降。

当网络传输存在问题是,可以检测网卡设备是否存在故障,如果可能,可以升级为千兆网卡或者光纤网络,还可以检查网络部署环境是否合理。

4.3 通过netstat –r组合检测系统的路由表信息

在网络不通,或者网络异常时,首先想到的就是检查系统的路由表信息,“netstat –r”的输出结果与route命令的输出完全相同,请看下面的一个实例:

  1. [root@webserver ~]# netstat -r 
  2. Kernel IP routing table 
  3. Destination Gateway Genmask Flags MSS Window irtt Iface 
  4. 10.10.1.0 * 255.255.255.0 U 0 0 0 eth0 
  5. 192.168.200.0 * 255.255.255.0 U 0 0 0 eth1 
  6. 169.254.0.0 * 255.255.0.0 U 0 0 0 eth1 
  7. default 10.10.1.254 0.0.0.0 UG 0 0 0 eth0 

关于输出中每项的具体含义,已经在前面章节进行过详细介绍,这里不再多讲,这里我们重点关注的是default行对应的值,default项表示系统的默认路由,对应的网络接口为eth0。

4.4 通过sar –n组合显示系统的网络运行状态

sar提供四种不同的选项来显示网络统计信息,通过“-n”选项可以指定4个不同类型的开关:DEV、EDEV、SOCK和FULL。DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,SOCK显示套接字信息,FULL显示所有三个开关。请看下面的一个输出:

  1. [root@webserver ~]# sar -n DEV 2 3 
  2. Linux 2.6.9-42.ELsmp (webserver) 12/01/2008 _i686_ (8 CPU) 
  3.     02:22:31 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 
  4. 02:22:33 PM lo 31.34 31.34 37.53 37.53 0.00 0.00 0.00 
  5. 02:22:33 PM eth0 199.50 279.60 17.29 344.12 0.00 0.00 0.00 
  6. 02:22:33 PM eth1 5.47 4.98 7.03 0.36 0.00 0.00 0.00 
  7. 02:22:33 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
  8.     02:22:33 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 
  9. 02:22:35 PM lo 67.66 67.66 74.34 74.34 0.00 0.00 0.00 
  10. 02:22:35 PM eth0 159.70 222.39 19.74 217.16 0.00 0.00 0.00 
  11. 02:22:35 PM eth1 3.48 4.48 0.44 0.51 0.00 0.00 0.00 
  12. 02:22:35 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
  13.     02:22:35 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 
  14. 02:22:37 PM lo 4.52 4.52 9.25 9.25 0.00 0.00 0.00 
  15. 02:22:37 PM eth0 102.51 133.67 20.67 116.14 0.00 0.00 0.00 
  16. 02:22:37 PM eth1 27.14 67.34 2.42 89.26 0.00 0.00 0.00 
  17. 02:22:37 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
  18.     Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 
  19. Average: lo 34.61 34.61 40.48 40.48 0.00 0.00 0.00 
  20. Average: eth0 154.08 212.15 19.23 226.17 0.00 0.00 0.00 
  21. Average: eth1 11.98 25.46 3.30 29.85 0.00 0.00 0.00 
  22. Average: sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 

对上面每项的输出解释如下:

通过“sar –n”的输出,可以清楚的显示网络接口发送、接收数据的统计信息。此外还可以通过“sar -n EDEV 2 3”来统计网络错误信息等。

4.5 小结

本节通过几个常用的网络命令介绍了对网络性能的评估,事实上,网络问题是简单而且容易处理的,只要我们根据上面给出的命令,一般都能迅速定位问题。解决问题的方法一般是增加网络带宽,或者优化网络部署环境。

除了上面介绍的几个命令外,排查网络问题经常用到的命令还有traceroute,主要用于跟踪数据包的传输路径,还有nslookup命令,主要用于判断DNS解析信息。

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯