Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何获得监听套接字的积压_Linux_Performance_Tcp_Nginx_Kernel - Fatal编程技术网

Linux 如何获得监听套接字的积压

Linux 如何获得监听套接字的积压,linux,performance,tcp,nginx,kernel,Linux,Performance,Tcp,Nginx,Kernel,我在ubuntu linux的端口80上有一个监听套接字 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12248/nginx 是否有任何方法可以获取该套接字的backlog值(发送给listen()调用的backlog值) 我知道我可以查看nginx配置,但配置文件可以在不使用新配置重新加载nginx的情况下更改,因此配置和实际侦听调用中的backlog参数可能不同。没有用于获取backlog的标准TCP API。也没有理由需要它。您创建了套

我在ubuntu linux的端口80上有一个监听套接字

tcp    0  0 0.0.0.0:80      0.0.0.0:*   LISTEN  12248/nginx
是否有任何方法可以获取该套接字的backlog值(发送给listen()调用的backlog值)


我知道我可以查看nginx配置,但配置文件可以在不使用新配置重新加载nginx的情况下更改,因此配置和实际侦听调用中的backlog参数可能不同。

没有用于获取backlog的标准TCP API。也没有理由需要它。您创建了套接字,将其置于侦听状态,您应该知道您指定了什么backlog。系统有权向上或向下调整,但是即使如此,您也无法在应用程序中处理这些信息。

ss-lt
在Send-Q列中给出此值。

id使用当前积压信息来管理接收到的连接数,因为我可以响应传入连接并告诉发送方修改其连接间隔,从而减少(或增加)负荷。我无法控制有多少传入连接,但我可以控制它们连接的频率,从而减少积压并防止传入连接超时


在我的情况下,这恰好是传入连接源固件的一个功能,因此它可能是我的情况所特有的,与其他情况无关

这些信息没有任何用处,因为拥有超过640K的RAM是毫无意义的。@Chucky事实是,自BSD Sockets API设计以来的35年中,没有人认为适合添加这样的函数,这表明fort没有任何用处。如果你有反例,请提供它。仅仅把两个不相关的问题并列起来实际上并不能构成一个合乎逻辑的论点,但这种特殊的并列方式对于你的目的来说是不恰当的。64万的错误在几年内得到了承认和解决。从来没有解决过侦听backlog API的缺乏问题,这表明几代TCP/IP实现者都同意我的观点。向操作员发送错误消息是一个原因。显示待办事项正受到影响是另一个暴露负载状态的问题。如果这些下层投票者中的任何人愿意告诉我们他们认为这个不存在的API的名称,那将是最有趣的。@aredridel问题是关于“在
lsten()
调用中设置的backlg值”,而不是关于它当前的占用率,很难看出操作员可以对这些信息做些什么。这显示了最大值是多少,有没有办法查看套接字上积压的请求中当前有多少个?Schneems,您应该可以在另一列(Recv-Q)中看到这一点。例如,创建一个侦听套接字但从不接受的服务器。如果您
telnet
四次并将其保留在后台运行,您应该看到
Recv-Q
的值为4。请注意,您在
Send-Q
中看到的值(此类套接字的有效待办事项大小)可能与用户在
listen(2)
syscall中设置的值不同。这是因为Linux将使用
/proc/sys/net/core/somaxconn
作为上限,并在此基础上更改backlog值(请参见
net/socket.c#sys\u listen
:)@CiroCosta这是当前大小,而不是最大大小。它不提供“该套接字的backlog值(发送到
listen()
call的backlog值)”,这是所要求的。