TCP 缓冲区不断填满(Recv-Q 已满):命名为无响应

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

谁有主意?

答案1

显然日志记录有问题。我将 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;
  };
};

答案2

这意味着您的网卡和内核能够很好地接收数据包,但无论您的 DNS 服务器是什么,或者侦听 UDP 53 的任何服务器都不会经常或足够快地从 UDP 套接字读取数据。

相关内容