我在CouchDB上运行基准测试时,我注意到即使使用大容量插入,并行运行其中一些也几乎快了两倍。我也知道Web浏览器使用多个并行连接来加速页面加载。
多个连接比一个连接速度快的原因是什么?它们通过相同的线路,甚至是本地主机。
如何确定理想的并行请求数?有没有经验法则,比如“threadpool size =#cores + 1”?
答案 0 :(得分:1)
门控因素不是线路本身,它毕竟运行得非常快(忽略路由器延迟),但每端都有软件开销。必须设置每个物理传输,发送和存储数据,然后在任何其他方式之前完全处理。因此,每个连接都是有效的同步,无论它声称是在套接字级别:异步操作的一个套接字仍然以同步方式来回移动数据,因为软件需要同步。
第二个连接可以利用延迟 - 线路上的死区时间 - 来自软件为第一次连接做出的事情。因此,即使每个连接都是同步的,多个连接也可以让事情发生得更快。事情似乎(但当然只有似乎)并行发生。
您可能需要查看HTTP规范RFC 2616。它将告诉您正在进行HTTP连接的交换。
我无法谈论最佳并行请求数,这是浏览器和服务器之间的问题。
答案 1 :(得分:0)
每个连接都使用一个自己的线程。每个线程,都有一个消耗CPU,网络和其他资源的量子。主要是CPU。
当您开始并行调用时,线程会对CPU时间产生争议并“同时”运行。
这是对事物的高级概述。我建议你阅读有关异步调用和线程编程的内容,以便更好地理解它。
[]的,
过去