2011-09-24 215 views
1

我在CouchDB上运行基准测试时,发现即使使用大容量插入,并行运行其中几个速度几乎快了一倍。我也知道Web浏览器使用大量的并行连接来加速页面加载。如何最大化HTTP网络吞吐量?

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

如何确定理想的并行请求数?有没有经验法则,比如“threadpool size =#cores + 1”?

回答

1

门控因素并不是线路本身,毕竟,线路运行非常快(忽略路由器延迟),而是每端的软件开销。每次物理传输都必须建立,数据发送和存储,然后在任何事情都可以以其他方式完成之前完成处理。所以每个连接都是有效同步的,不管它声称在套接字级别是什么:异步操作的一个套接字仍然以同步方式来回传输数据,因为软件需要同步。

第二个连接可以利用延迟 - 线路上的死亡时间 - 这是软件为第一次连接而做的事。因此,尽管每个连接都是同步的,但多个连接让事情发生得更快。事情似乎(但当然似乎只有似乎)并行发生。

你可能想看看RFC 2616,HTTP规范。它会告诉你有关发生HTTP连接的交换。

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

0

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

当您开始并行调用时,线程将争用CPU时间并“同时”运行。

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

[]的,

和过去的