套接字侦听积压参数,如何确定该值?

时间:2020-03-06 14:32:24  来源:igfitidea点击:

我应该如何确定对侦听套接字的积压参数使用什么?仅指定一个很大的数字是否有问题?

解决方案

从文档中:

A value for the backlog of SOMAXCONN is a special constant that instructs the underlying service provider responsible for socket s to set the length of the queue of pending connections to a maximum reasonable value.

Winsock程序员的常见问题解答对此有很长的答案。它详细介绍了标准设置以及在NT 4.0修补程序中添加的动态积压功能。

我第二次使用SOMAXCONN,除非我们有特定的原因使用短队列。

请记住,如果队列中没有空间用于新连接,则不会发送任何RST,从而允许客户端通过重新传输SYN自动继续尝试连接。

同样,backlog参数在不同的套接字实现中可以具有不同的含义。

  • 在大多数情况下,它表示半开连接队列的大小,在某些情况下,它表示已完成连接队列的大小。
  • 在许多实现中,backlog参数将相乘以产生不同的队列长度。
  • 如果指定的值太大,无论如何,所有实现都会默默地将该值截断为最大队列长度。

作为对使用boost asio的任何人的警告,SOMAXCONN值与boost一起使用为5.