我正在运行语音应用程序,它流式传输 UDP (RTP) 数据包以进行语音,我正在调查一些奇怪的问题,我的ifconfig ens4 | grep error
计数器特别上升overrun
如果您看到 UDP 发送缓冲区错误且计数器定期增加,这是否意味着我的 TX 缓冲区已满?
[root@voice-01 ~]# netstat -suna
...
Udp:
564240050621 packets received
600156354 packets to unknown port received.
3095742 packet receive errors
621737694201 packets sent
0 receive buffer errors
1475161 send buffer errors
InCsumErrors: 913878
...
接口溢出计数器
[root@voice-01 ~]# ifconfig ens4 | grep -i error
RX errors 15147252 dropped 0 overruns 15147252 frame 0
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
溢出直接涉及高速 RX 数据,其中内核无法足够努力地处理,我也增加了 udp 缓冲区大小,但溢出计数器仍然不时增加。
sysctl -w net.core.rmem_max=26214400 sysctl -w net.core.rmem_default=26214400 sysctl -w net.core_wrmem_default=26214400 sysctl -w net.core_wmem_default=26214400
ethtool 统计信息
[root@voice-01 ~]# ethtool -S ens4 | grep rx_dis
[0]: rx_discards: 1764406
[1]: rx_discards: 1655431
[2]: rx_discards: 1418942
[3]: rx_discards: 1880233
[4]: rx_discards: 1950109
[5]: rx_discards: 2227701
[6]: rx_discards: 1095657
[7]: rx_discards: 3154773
rx_discards: 15147252
我有完全相同的硬件 voice-02 盒,它也处理相同数量的流量,但它几乎有zero
错误
我有网卡是Broadcom Limited NetXtreme II BCM57810 10 Gigabit Ethernet
我应该尝试什么其他选择或了解出了什么问题?