【问题标题】:How do I maximize HTTP network throughput?如何最大化 HTTP 网络吞吐量?
【发布时间】:2011-11-24 09:04:52
【问题描述】:

当我在 CouchDB 上运行基准测试时,我注意到即使使用大量的批量插入,并行运行其中一些插入的速度几乎是两倍。我还知道网络浏览器使用许多并行连接来加快页面加载速度。

多个连接比一个快的原因是什么?他们通过同一条线路,甚至到本地主机。

如何确定理想的并行请求数?是否有经验法则,例如“线程池大小 = # cores + 1”?

【问题讨论】:

    标签: http networking couchdb


    【解决方案1】:

    控制因素不是线路本身,毕竟它运行得非常快(忽略路由器延迟),而是每一端的软件开销。必须设置每个物理传输,发送和存储数据,然后在任何事情发生相反的情况之前进行完全处理。因此,每个连接实际上都是同步的,无论它声称在套接字级别是什么:一个异步操作的套接字仍然以同步的方式来回移动数据,因为软件需要同步。

    第二个连接可以利用延迟(网络上的死区时间),该延迟是由软件为第一个连接执行其操作而产生的。因此,即使每个连接都是同步的,多个连接也会让事情发生得更快。事情似乎(但当然只是似乎)并行发生。

    您可能想查看RFC 2616,HTTP 规范。它将告诉您发生在 HTTP 连接上的交换。

    关于最佳并行请求数量我不能说,这是浏览器和服务器之间的问题。

    【讨论】:

      【解决方案2】:

      每个连接都消耗一个自己的线程。每个线程都有一个消耗 CPU、网络和其他资源的量。主要是CPU。

      当您启动并行调用时,线程将争用 CPU 时间并“同时”运行事物。

      这是对事物的高级概述。我建议您阅读异步调用和线程编程以更好地理解它。

      []的,

      过去

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-22
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多