我正在构建一个Web应用程序,其中所有数据库连接都是通过在同一台机器上运行的代理完成的(具体来说,Couchbase Moxi)。我听说建立与外部服务器的TCP连接有开销(时间和内存),这是连接池(Moxi处理其外部连接)的基本原理。但是对于localhost / loopback的TCP连接是否也存在这种开销?具体来说,我需要在我的应用程序和本地代理之间建立连接池,还是可以为每个请求在那里建立新连接?更一般地说(对于我自己的教育,我想),如果建立到localhost的TCP连接有任何开销,它是如何引入的?
答案 0 :(得分:3)
对于localhost,同样适用于远程tcp,但响应时间是一个较低的因素 - (对于我刚刚进行的简单测试,为0.019而不是0.19 ms)
这只是开销的一部分 - 它会影响建立连接所需的时间。 (TCP SYN-ACK序列,您可以在维基百科上查看:http://en.wikipedia.org/wiki/SYN_%28TCP%29#Connection_establishment)
除此之外,数据库本身可能会引入其他开销 - 接受连接,检查安全性,检查授权,可能加载任何特定于用户的设置,...... - 即使使用本地主机连接,这种开销也会保持不变。