【问题标题】:How many long-living concurrent TCP sessions are consideer reasonable?有多少长期并发 TCP 会话被认为是合理的?
【发布时间】:2019-10-02 18:39:52
【问题描述】:

我正在 Linux 中开发一个 TCP 服务器,它最初可以处理数千个并发客户端,这些客户端旨在长期存在。然而,在开始实现一些功能之后,我为那些阻塞的调用创建了一个线程池,这些调用应该分开完成,比如数据库或磁盘访问。

经过一些测试,在请求“许多”异步函数的高负载下,由于许多任务被排队,我的服务器开始滞后,因为它们到达的速度比处理它们的速度快。这些任务在纳秒内解决,但有数千个。我明白这是完全正常的。

我当然可以在负载均衡器或购买具有更多内核的更好服务器之后发展,但是,在实践中,作为行业标准,在这样的服务器中,有多少并发的长寿命 TCP 会话被认为是一个“好”的数字像我描述的这个?我怎么能说我得到的并发连接数“足够好”?

【问题讨论】:

  • 主机 RFC 曾经说过主机不应打开两个以上到服务器的连接。不过,我认为浏览器在十年前就停止这样做了。
  • 您需要能够处理您的网站所需的尽可能多的会话。这取决于您在单台计算机上托管的站点数量、它们的受欢迎程度以及应用程序的设计方式。没有简单的答案。 Server Fault 是询问有关为预期负载配置服务器的问题的更好地方。

标签: linux asynchronous tcp server


【解决方案1】:

很遗憾,没有一个神奇的数字可以回答你的问题,但我有一些注意事项让你找到你的数字:

  • 首先,每个操作系统都有自己的最大 同时连接,因为端口号是有限的。所以 检查你是否没有侵入这个号码,否则每一个新的 您的服务器将拒绝连接。
  • 为了确定您可以同时连接多少个连接,您必须为您的服务建立一个最大响应时间。

请记住,即使有同时连接、多核 CPU 等......响应也将由同一个网络发出并出现瓶颈。因此,我建议您对您的架构进行负载和压力测试,以便找到您可接受的延迟限制。


TL;DR: 没有神奇的答案,你应该做一个负载和压力测试来找到它。

【讨论】:

    猜你喜欢
    • 2010-09-14
    • 2011-05-13
    • 2013-06-02
    • 1970-01-01
    • 2011-10-15
    • 2016-12-17
    • 2011-09-18
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多