人们说连接池与单连接相比有很多好处:
根据这些好处,我认为,当且仅当我们处于多线程时,才应该使用连接池。但单线程env,如Rails3,nodejs,也有连接池,为什么?
我不擅长tcp / ip / socket,因为我知道,如果我们发送的数据包非常小(远小于MSS),连接可以由多线程共享(为了证明它,我有测试:客户端向服务器发送236个字节,然后从服务器接收1306个字节,并发性为500:没有发生任何错误),所以也许数据包混乱不会经常发生?
我还在nodejs中进行了测试:将连接池(https://github.com/coopernurse/node-pool)添加到单个连接程序并比较它们的性能。结果超出了我的预期:连接池将性能降低至少3倍,如果并发性增加则更糟。这是因为服务器回复的速度不是很快。
说了这么多,我希望有人可以清楚地解释连接池并消除我对它的所有怀疑和猜疑。