原创文章:来自找出重传较高的TCP连接
这里先给出某一台主机上评估tcp重传的指标,TCP重传率定义:
TCP重传率 = TCP重传的报文数量/TCP输出的报文数量;
即tcp retransfer radio = Retrans/outSegs
在linux系统中可以通过/proc/net/snmp得到各层网络协议收发包的情况,另外一些扩展的tcp指标可以通过tcpext在/proc/net/netstat文件中读到。监控某台主机重传率的通常方法:可以每隔1秒从这两个文件中分别读到TcpRetransSegs和TcpOutSegs和上一次记录取差值后,再使用重传率计算公式。
简单的观察方法在centos 7等3.10内核中可以使用以下命令实时观察系统中每秒tcp重传报文数量:
watch -n 1 'nstat -z -t 1 | grep -e TcpExtTCPSynRetrans -e TcpRetransSegs -e TcpOutSegs -e TcpInSegs'
其中TcpExtTCPSynRetrans代表syn报文和synack报文的重传数量,TcpRetransSegs代表总的重传数量,TcpOutSegs代表总的tcp报文发出数量,TcpInSeg代表总的入报文数量通常用于计算tcp吞吐量。
备注:TcpExtTCPSynRetrans是centos 7系统(与linux内核有关)