一次由于网卡流量跑满引起的服务器丢包总结

最近收到线上一台DB服务器ping丢包,丢包率一直在30%左右。通过Zabbix监控查看了服务器CPU,内存都很正常,网卡流量也不高,基本在100M左右。
icmpping
首先确认一下服务器硬件是否正常,由于没有收到硬件报警。登录服务器通过HP管理工具在此确认了硬件信息都正常(硬盘,缓存卡,内存等)。

第二步在排查一下系统问题,通过top,ps等命令也没有发现什么异常,基本上排除系统问题。

第三步查看了一下该服务器上联监控机端口流量,也都很正常,由于收到只有这一台服务器报警,也排除了上联交换机故障问题。

最后向同事咨询了服务器承载业务类型,每2分钟会同步大量的数据文件到该服务器上面,然后用sar命令查看一下网卡流量,发现发送流量瞬间在12万KB/s,换算成b/s基本上在940-950Mb/s,意味着千兆网卡流量基本上爆满,才会引起服务器ping丢包。

sar

由于我的监控是每5分钟抓一次,所以对应服务器瞬间高流量都没有获取到,还得优化一下监控时间间隔。

下面顺便总结一下sar命令常用的选项,sar命令行的常用格式如下:

sar 选项 取样时间间隔 输出次数

1)查看CPU信息,1表示1秒钟取一次值,2表示采集2次数据。

[root@monitor ~]# sar -u 1 2
Linux 2.6.32-358.el6.x86_64 (monitor)     08/05/16     _x86_64_    (24 CPU)

10:51:39        CPU     %user     %nice   %system   %iowait    %steal     %idle
10:51:40        all      0.08      0.00      0.17      0.00      0.00     99.75
10:51:41        all      0.21      0.00      0.21      0.00      0.00     99.58
Average:        all      0.15      0.00      0.19      0.00      0.00     99.67

输出项说明:

CPU         all 表示统计信息为所有CPU的平均值。
%user       显示在用户级别(application)运行使用CPU总时间的百分比。
%nice       显示在用户级别,用于nice操作,所占用CPU总时间的百分比。
%system     在核心级别(kernel)运行所使用CPU总时间的百分比。
%iowait     显示用于等待I/O操作占用 CPU 总时间的百分比。
%steal      管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle       显示CPU空闲时间占用CPU总时间的百分比。

2)查看网络接口信息。

[root@monitor ~]# sar -n DEV 1 2
Linux 2.6.32-358.el6.x86_64 (monitor)     08/05/16     _x86_64_    (24 CPU)

11:04:22        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
11:04:23           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:04:23         eth0    140.40    170.71     98.07     84.00      0.00      0.00      2.02
11:04:23         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:04:23         eth2      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:04:23         eth3      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11:04:23        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
11:04:24           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:04:24         eth0     40.59     26.73     41.62      4.17      0.00      0.00      0.99
11:04:24         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:04:24         eth2      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:04:24         eth3      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth0     90.00     98.00     69.56     43.69      0.00      0.00      1.50
Average:         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth2      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth3      0.00      0.00      0.00      0.00      0.00      0.00      0.00

输出项说明:

IFACE        网络设备名
rxpck/s      每秒接收的包总数
txpck/s      每秒传输的包总数
rxKB/s       每秒接收的字节(byte)总数
txKB/s       每秒传输的字节(byte)总数
rxcmp/s      每秒接收压缩包的总数
txcmp/s      每秒传输压缩包的总数
rxmcst/s     每秒接收的多播(multicast)包的总数

3)查看磁盘1/0信息。

[root@monitor ~]# sar -b 1 2
Linux 2.6.32-358.el6.x86_64 (monitor)     08/05/16     _x86_64_    (24 CPU)

11:07:55          tps      rtps      wtps   bread/s   bwrtn/s
11:07:56        11.11      0.00     11.11      0.00    129.29
11:07:57         6.93      0.00      6.93      0.00     63.37
Average:         9.00      0.00      9.00      0.00     96.00

输出项说明:

tps       每秒钟物理设备的I/O传输总量
rtps      每秒钟从物理设备读入的数据总量
wtps      每秒钟向物理设备写入的数据总量
bread/s   每秒钟从物理设备读入的数据量,单位为 块/s
bwrtn/s   每秒钟向物理设备写入的数据量,单位为 块/s

总结:在系统运维的过程中,一般关注服务器的下面指标。
CPU使用率:如果服务器CPU使用率超过80-85%,说明服务器CPU处理能力比较繁忙,需要提升CPU性能。
CPU iowait:如果服务器CPU iowait的值大于5-10%,说明磁盘I/O存在瓶颈,需要提升硬盘的读写速度。
网卡流量:网卡流量和上联交换机和服务器网卡都有关系。如果系统和网络都正常,服务器出现丢包,应该考虑网卡的吞吐率是否达到上限而出现的丢包。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *