知道GNU/Linux中接受挂起连接队列的大小

Jon*_*tez 10 c sockets networking listen

在典型的C网络服务器实现中,可以使用listen设置接受暂挂队列的大小.当新连接收入并且队列中没有更多空间时,ECONNREFUSED将发送到客户端或请求被忽略.

有没有办法知道这个队列的状态?这很重要,因为在高负载基于事件的守护进程中,我们正在检测来自客户端的一些重试,并且我们怀疑此队列已满并且忽略了连接尝试.

提前致谢.

小智 8

在linux中:/ proc/sys/net/ipv4/tcp_max_syn_backlog:

记住的连接请求的最大数量,但仍未收到来自连接客户端的确认.

对于内存超过128Mb的系统,默认值为1024,对于低内存机器,默认值为128.如果服务器出现过载,请尝试增加此数量.

/ proc/sys/net/core/somaxconn:socket listen()backlog的限制,在用户空间中称为SOMAXCONN.默认为128.另请参阅tcp_max_syn_backlog以获取TCP套接字的其他调整.

这些是相关的sysctls ..在openbsd上,我现在坐着一个快速的sysctl -a显示:net.inet.ip.maxqueue = 300