最近收到线上一台DB服务器ping丢包,丢包率一直在30%左右。通过Zabbix监控查看了服务器CPU,内存都很正常,网卡流量也不高,基本在100M左右。
首先确认一下服务器硬件是否正常,由于没有收到硬件报警。登录服务器通过HP管理工具在此确认了硬件信息都正常(硬盘,缓存卡,内存等)。
第二步在排查一下系统问题,通过top,ps等命令也没有发现什么异常,基本上排除系统问题。
第三步查看了一下该服务器上联监控机端口流量,也都很正常,由于收到只有这一台服务器报警,也排除了上联交换机故障问题。
最后向同事咨询了服务器承载业务类型,每2分钟会同步大量的数据文件到该服务器上面,然后用sar命令查看一下网卡流量,发现发送流量瞬间在12万KB/s,换算成b/s基本上在940-950Mb/s,意味着千兆网卡流量基本上爆满,才会引起服务器ping丢包。
由于我的监控是每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存在瓶颈,需要提升硬盘的读写速度。
网卡流量:网卡流量和上联交换机和服务器网卡都有关系。如果系统和网络都正常,服务器出现丢包,应该考虑网卡的吞吐率是否达到上限而出现的丢包。