non*_*ot1 71 linux performance-monitoring network-monitoring tcp packetloss
如何被动监视进出机器的 TCP 连接上的数据包丢失?
基本上,我想要一个位于后台并监视 TCP ack/nak/re-transmits 的工具,以生成关于哪些对等 IP 地址“似乎”正在遭受重大损失的报告。
我在 SF 中发现的大多数此类问题都建议使用 iperf 之类的工具。但是,我需要监视到/来自我机器上真实应用程序的连接。
这些数据是否只是位于 Linux TCP 堆栈中?
Joe*_*l K 61
一般而言,您的问题的规模netstat -s
将跟踪您的重传总数。
# netstat -s | grep retransmitted
368644 segments retransmitted
Run Code Online (Sandbox Code Playgroud)
您可以使用 grepsegments
获取更详细的视图:
# netstat -s | grep segments
149840 segments received
150373 segments sent out
161 segments retransmitted
13 bad segments received
Run Code Online (Sandbox Code Playgroud)
要进行更深入的研究,您可能想要启动 Wireshark。
在 Wireshark 中,将过滤器设置tcp.analysis.retransmission
为按流查看重传。
这是我能想到的最好的选择。
探索的其他死胡同:
netstat -s
显示它只是在打印/proc/net/netstat
小智 14
这些统计信息位于 /proc/net/netstat 中,collectl
并将以交互方式或写入磁盘以供您以后播放:
[root@poker ~]# collectl -st
waiting for 1 second sample...
#<------------TCP------------->
#PureAcks HPAcks Loss FTrans
3 0 0 0
1 0 0 0
Run Code Online (Sandbox Code Playgroud)
当然,如果你想看看,然后并排侧与网络流量,只包括n
有-s
:
[root@poker ~]# collectl -stn
waiting for 1 second sample...
#<----------Network----------><------------TCP------------->
# KBIn PktIn KBOut PktOut PureAcks HPAcks Loss FTrans
0 1 0 1 1 0 0 0
0 1 0 1 1 0 0 0
Run Code Online (Sandbox Code Playgroud)
小智 8
您可以使用该ss
工具获取详细的 TCP 统计信息:
$ /sbin/ss -ti
Run Code Online (Sandbox Code Playgroud)
在 Debian 下,使用apt-get install iproute
获取二进制文件。