前言
说实话,对于网络来说,我是最不熟悉的了,好多名词我都不清楚是什么意思,但是学习这个东西,就是因为咱们不会,咱们才有激情去学习,对吧。而由于咱对网络知识的缺乏,在段时间内,又无法很快建立全面的网络知识体系,所以呢,我这篇文章也就是班门弄斧了,就是一篇非常简单的、命令式的总结,希望大家有一定的帮助。如果有哪位网络大神看到了这篇文章,也希望能指点一二。
网络的监测是所有Linux子系统里面最复杂的,有太多的因素在里面,比如:延迟、阻塞、冲突、丢包等,更糟的是与Linux主机相连的路由器、交换机、无线信号都会影响到整体网络并且很难判断是因为Linux网络子系统的问题还是别的设备的问题,增加了监测和判断的复杂度。所以我这里只能通过总结一些命令来管中窥豹了。
细读以下几遍文章
说到网络性能,肯定也要通过一些工具来发现这些性能问题。下面说的这些工具,就是作为运维人员不得不会的。
经验分享
即使掌握了上面的几个命令,如果没有实际的经验,也是很难把住网络这个难题的命脉的。在实际工作中,主要观察点分为以下两点:
- UDP监控
- 对于UDP监控而言,我们需要查看所有监听端口的网络情况,通过
netstat -anu
命令进行查看,对于Recv-Q
和Send-Q
两个指标值为0,或者在时间区间内对应的值不大都说明是正常的; - 同时对于UDP服务而言,查看丢包情况,即网卡收到了,但是应用层没有处理过来的而造成的丢包。主要通过
netstat -su
命令查看,确认是否有大量错误包。
- 对于UDP监控而言,我们需要查看所有监听端口的网络情况,通过
- TCP监控
- 对于TCP服务而言,这个就比较复杂;因为TCP涉及到重传,所以我们就需要重点关注这个重传率。通过
netstat -st
命令查看segments send out
和segments retransmited
指标,对比一段时间内,这两个指标的增长率就是对应的重传率,发生重传说明网络传输有丢包,基本上从3个点去定位:客户端网络情况、服务端网络情况、中间链路网络情况:- 客户端机器网络异常
- 服务端网卡流量跑满,网卡有丢包现象,关注ifconfig的error输出
- 中间网络连路拥塞,比如交换机上联、核心交换机链路等,需要逐个排查链路流量情况
- 另一个关注点就是网卡吞吐率,我们可以通过
sar -n DEV 2 3
命令来查看,将rxkB/s
和txkB/s
进行相加,得到网卡设备的实际吞吐率,然后再和网卡的硬件指标进行比对即可。比如一个网卡的rxkB/s
指标为21999.10,txkB/s
指标为482.56,那这个网卡的吞吐率大概在22Mbytes/s,即176 Mbits/sec,没有达到1Gbit/sec的硬件上限。
- 对于TCP服务而言,这个就比较复杂;因为TCP涉及到重传,所以我们就需要重点关注这个重传率。通过
总结
对于网络性能来说,这个真的是一个很难把握的点,而我这边文章通过一些简单的网络监控命令入手,再结合一些平时的经验,让大家可以把这个网络性能知识点掌握了。总结就到此,整个系列的总结也就到此结束。下个专题见了,各位~~~
最后,如果您觉的整个系列对你的运维水平所有提升,记得点击下面的“打赏”哦,你的支持是我最大的动力。
附录
计算重传率的Shell脚本:
#!/bin/bash
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin'
SHELLDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
netstat -s -t > /tmp/netstat_s 2>/dev/null
s_r=`cat /tmp/netstat_s | grep 'segments send out' | awk '{print $1}'`
s_re=`cat /tmp/netstat_s | grep 'segments retransmited' | awk '{print $1}'`
[ -e ${SHELLDIR}/s_r ] || touch ${SHELLDIR}/s_r
[ -e ${SHELLDIR}/s_re ] || touch ${SHELLDIR}/s_re
l_s_r=`cat ${SHELLDIR}/s_r`
l_s_re=`cat ${SHELLDIR}/s_re`
echo $s_r > ${SHELLDIR}/s_r
echo $s_re > ${SHELLDIR}/s_re
tcp_re_rate=`echo "$s_r $s_re $l_s_r $l_s_re" | awk '{printf("%.2f",($2-$4)/($1-$3)*100)}'`
echo $tcp_re_rate
果冻想,认真玩技术的地方。
2019年3月11日,于内蒙古呼和浩特。