我应该使用啥积压值?

Posted

技术标签:

【中文标题】我应该使用啥积压值?【英文标题】:What value of backlog should I use?我应该使用什么积压值? 【发布时间】:2012-04-17 16:10:35 【问题描述】:

我读了man 2 listen。

我不明白什么是积压值,它说

backlog 参数定义了 sockfd 的挂起连接队列可以增长到的最大长度

对,我该如何定义什么是最佳价值?

谢谢

【问题讨论】:

socket listen backlog parameter, how to determine this value?的可能重复 【参考方案1】:

基本上,listen() 积压影响的是,如果您的应用程序不是 accept()ing 连接,则有多少传入连接可以排队。对于大多数应用程序来说,这并不是特别重要。大多数系统使用的最大值是 128,通过它通常是安全的。

【讨论】:

好吧,如果我listen(sockfd, 5),我应该在我的accept()(在我的无限循环中)测试current_nb_client < 5,以便向我的客户发送错误消息,或者我可以信任积压和在客户端处理这个? 不,这不是必需的——只要您在连接进入时立即接受连接,您的收听积压的长度是无关紧要的。您可以根据需要拥有任意数量的活动连接;侦听积压仅影响尚未完全建立的连接。 哦,我刚刚明白了!我认为他们不会从队列中消失。但不是!这是一个待处理的队列,我只需要accept() 每个人,它们就会从队列中消失。【参考方案2】:

这是试图连接的客户端之间的斗争。将接受请求推送到队列中,并且接受线程将它们吸走。通常,线程获胜。我通常设置为 32,但它通常不是一个重要的参数。

【讨论】:

好吧,如果我listen(sockfd, 5),我应该在我的accept()(在我的无限循环中)测试current_nb_client < 5,以便向我的客户发送错误消息,还是我可以信任积压和在客户端处理这个? 如果队列已满,连接尝试将被拒绝,但这种情况不太可能发生,您应该忘记它。必须有一些队列来覆盖那些刚刚发生大量连接请求突然出现的时间,但总的来说,今天的处理器/内存/操作系统/任何东西都可以轻松跟上繁忙的网络。

以上是关于我应该使用啥积压值?的主要内容,如果未能解决你的问题,请参考以下文章

Java SocketServer 不受积压值的限制

我应该为这个 UDF 使用啥对象,它应该根据列标题在一组数据中查找值?

系统学习消息队列分享(八) 息积压了该如何处理?

我应该为 iOS 布尔状态使用啥值?

Pulsar 中的意外积压大小

听()忽略积压值