wireshark分析tcp的丟包比較簡單,因爲可以分析重發次數,和響應;
分析udp的丟包,需要分析帶序號的報文,RTP報文,可以分析丟包情況;若是分析iperf的udp包,沒法分析出丟包來。
網上說可以使用watch netstat -su查看丟包統計。主要看RcvbufErrors和SndbufErrors,packet receive errors。
丟包原因:
發送端:1. 發送的包太大,2.發包速度太快,3.udp包流量太大,發送緩衝區又太小。
接收端:接收緩衝區太小
使用 sysctl -a | grep mem
socket查看緩衝區大小
lmz@X280:~/下載$ sudo sysctl -a | grep mem
[sudo] lmz 的密碼:
net.core.optmem_max = 20480
net.core.rmem_default = 212992
net.core.rmem_max = 212992
net.core.wmem_default = 212992
net.core.wmem_max = 212992
net.ipv4.fib_sync_mem = 524288
net.ipv4.igmp_max_memberships = 20
net.ipv4.tcp_mem = 92376 123168 184752
net.ipv4.tcp_rmem = 4096 131072 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
net.ipv4.udp_mem = 184752 246336 369504
net.ipv4.udp_rmem_min = 4096
net.ipv4.udp_wmem_min = 4096
vm.lowmem_reserve_ratio = 256 256 32 0 0
vm.memory_failure_early_kill = 0
vm.memory_failure_recovery = 1
vm.nr_hugepages_mempolicy = 0
vm.overcommit_memory = 0
/etc/sysctl.conf
修改rmem_default、rmem_max、wmem_default和wmem_max的值,執行sysctl -p即可生效。