我们应该总是更喜欢连接池到单连接吗?使用连接池而不是单个连接的确切好处是什么?

时间:2015-07-13 03:08:33

标签: node.js networking connection-pooling

人们说连接池与单连接相比有很多好处:

  1. 在多线程环境中,连接不能由不同的线程共享(是否真的会发生?enter image description here
  2. 连接池可以提高吞吐量:我们可以通过添加更多连接来更快地发送数据(是真的吗?
  3. 使程序健壮:我们可以在某些连接断开时使用另一个连接
  4. 根据这些好处,我认为,当且仅当我们处于多线程时,才应该使用连接池。但单线程env,如Rails3,nodejs,也有连接池,为什么?

    我不擅长tcp / ip / socket,因为我知道,如果我们发送的数据包非常小(远小于MSS),连接可以由多线程共享(为了证明它,我有测试:客户端向服务器发送236个字节,然后从服务器接收1306个字节,并发性为500:没有发生任何错误),所以也许数据包混乱不会经常发生?

    我还在nodejs中进行了测试:将连接池(https://github.com/coopernurse/node-pool)添加到单个连接程序并比较它们的性能。结果超出了我的预期:连接池将性能降低至少3倍,如果并发性增加则更糟。这是因为服务器回复的速度不是很快。

    说了这么多,我希望有人可以清楚地解释连接池并消除我对它的所有怀疑和猜疑。

0 个答案:

没有答案