java - Oracle getConnection 慢

标签 java oracle jdbc datasource

在 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/

相关文章:

java - Java中如何在不使用递归方法的情况下将给定的数字减少为两位数?

c# - 如何在不使用 OracleObjectMappingAttribute 的情况下使用 ODP.NET 从 Oracle UDT 进行映射?

java - Java中PrepareStatement的问题

java - Hadoop Hbase访问被拒绝异常

java - Spring Kafka-Consumer.poll() 到底什么时候在幕后被调用?

java - 尝试获取用户的个人资料信息时出现错误 : Captcha is needed (VK Android SDK)

mysql - 将 MySQL 存储过程移植到 Oracle

java - 想要在java中显示从mysql数据库检索到的多个数据

java - 华氏度到摄氏度的转换

Java 实体 Hibernate 到 Oracle 时区转换问题