代码之家  ›  专栏  ›  技术社区  ›  The.Anti.9

异步服务器套接字的适当积压工作是什么?

  •  4
  • The.Anti.9  · 技术社区  · 15 年前

    如果您使用的是C中的异步服务器套接字,那么在该套接字上放置的适当积压工作是什么?例如:

    server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    IPEndPoint iep = new IPEndPoint(IPAddress.Any, port);
    server.Bind(iep);
    server.Listen(10);
    
    1 回复  |  直到 15 年前
        1
  •  3
  •   Community Mohan Dere    8 年前

    在大多数应用程序中,侦听器本身可能不是瓶颈。通常,您需要通过执行某种工作来响应这些TCP请求,并且应用程序一次可以有效使用的工作人员数量将小于理论上可以维持的连接数量。

    这可能解释了亚历克斯·马泰利在评论中的“经验法则”:

    我总是喜欢用 5 但是我没有对 为什么?

    在四核服务器上,如果客户机启动CPU密集型任务,这是有意义的;4个工人/线程/核心有4个连接,当服务负载很重时,还有一个连接可以保持服务响应。

    但是,如果您的工作不是CPU密集型的,那么上述限制/说明与您无关,您可能能够管理10或50个连接,或者您可能需要使用一些机器专用资源,并且只允许使用一个。我基本同意 Hans 在这个问题上,没有一个硬性和快速的“正确答案”,您需要看看您的应用程序做什么,估计您认为它可以处理多少连接,并通过测试来调整它以获得最大的效率。