Linux
TCP 緩衝區不斷填滿(Recv-Q 已滿):命名為無響應
使用 netstat -an,我設置了 Recv-Q 已滿的消息。它正在填充到 rmem_max:
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 1894912 0 10.0.64.150:53 0.0.0.0:*
(它會一直“填充”直到崩潰)
尺寸:
/proc/sys/net/core/optmem_max:20480 /proc/sys/net/core/rmem_default:8388608 /proc/sys/net/core/rmem_max:8388608 /proc/sys/net/core/wmem_default:229376 /proc/sys/net/core/wmem_max:229376
結果 netstat -su:
Udp: 426057 packets received 37152 packets to unknown port received. 2350589 packet receive errors 517422 packets sent
誰有想法?
顯然日誌記錄有問題。我將 dns 伺服器設置為登錄到 rsyslog。在跟踪時,系統日誌的文件描述符似乎沒有“工作”。
通過將日誌綁定到本地文件解決:
logging{ channel bindlog { file "/var/log/named/bind.log" versions 3 size 5m; severity info; print-time yes; print-severity yes; print-category yes; }; category default{ bindlog; }; };
這意味著您的網卡和核心能夠很好地接收數據包,但是無論您的 DNS 伺服器是什麼,或者任何正在偵聽 UDP 53 的伺服器都不能經常或足夠快地從 UDP 套接字讀取數據。