在 Java 项目中,我使用的是 ojdbc6 jar
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
<scope>compile</scope>
</dependenc>
我第一次运行 dataSource.getConnection() 很快。第二次通常没问题。接下来的几次大约需要 45 秒。之后,需要几分钟时间。一旦我运行了给定应用程序的第一个连接,我获得的任何新连接都非常非常快。此延迟仅为给定运行获取第一个连接。
是什么让我的第一个连接如此缓慢?
我正在查看 netstat,在成功运行后没有看到任何连接挂起。尝试了几种不同的连接池(DBCP、C3PO)但没有成功。通过源码调试,在org.springframework.jdbc.datasource.DataSourceUtils这一行延迟100%:
Connection con = dataSource.getConnection();
有什么想法吗?
已编辑以获取更多详细信息
1) 我正在使用一个连接池(DBCP 或 C3PO)来保存连接供将来使用。当我谈到获得新连接时,我的意思是第一个连接正在使用中。我需要去数据库并获得一个新连接。当然,我可以一遍又一遍地返回并从连接池中获取相同的连接。但同时获得一秒也很快。
2) 我不知道我的数据库允许我登录多少个连接。知道这个属性在 oracle 中的什么位置吗?
最佳答案
是由于 java 使用/dev/random 而不是/dev/urandom 与数据库建立 ssh 连接....切换到/dev/urandom 修复了这个问题
关于java - Oracle getConnection 慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5503063/