为什么在Java中创建连接太昂贵了

时间:2018-02-08 13:12:27

标签: java connection

我确实想知道为什么连接的创建太昂贵了,所以 连接正在维持池中。它回来了。

1 个答案:

答案 0 :(得分:3)

  

为什么创建连接在java中很昂贵

因为创建与(例如)远程数据库的连接涉及执行数百万台机器指令。你需要:

  • 解析连接字符串
  • 在DNS中查找数据库的主机名
  • 打开TCP / IP网络连接
  • 通过网络连接建立SSL / TLS会话(昂贵的公钥加密,多个消息交换)
  • 将用户凭据传递给要进行身份验证的数据库服务器,这可能涉及数据库查询以查找匹配的用户详细信息。

每次网络数据包交换都会增加几微秒......或更多......

如果数据库位于同一台计算机上,并且通过环回连接或域套接字进行通信,则网络交互将更快,但不会立即进行。你仍然有系统调用开销,上下文切换/处理或线程调度的成本等等。而这只是"传输"层。

如果您可以免除SSL / TLS和加密,您可以节省更多时间。

但是,如果建立机上非加密数据库连接的平均时间超过5毫秒,我会感到惊讶。

现在乘以"每分钟大量的新数据库连接"以及不回收连接的开销可能是一个主要问题。

但是,值得在自己的机器上使用自己的数据库进行测量...

相关问题