当前位置: 首页 > 面试题库 >

Oracle getConnection慢

高英彦
2023-03-14
问题内容

在一个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秒。之后,需要花费几分钟。一旦运行了给定应用程序的FIRST连接,我得到的任何新连接都将非常快速。对于给定的运行,此延迟仅获得FIRST连接。

是什么让我的第一次连接如此缓慢?

我正在看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修复了此问题



 类似资料:
  • 问题内容: 我的表(SQL Server 2008)拥有100万以上的记录,当我尝试按日期时间排序记录时,它需要1秒钟,但是当我按ID(int)排序时,它仅需要约0.1秒钟。 有什么办法可以提高效率吗?(我已经将datetime列添加到索引中了) 问题答案: 通过排序可能使用聚簇索引扫描,而通过排序或索引查找来排序。 这两种方法都比聚簇索引扫描慢。 如果您的表格是由集群的,则基本上意味着它已经被排

  • 问题内容: 我发现从Java应用程序填充报告时,JasperReports确实很 慢 。程序挂在此行: 它通常在那里停留 3分钟,消耗高达300Mb的RAM和50%的CPU 。 是使用3个子报表的已编译(.jasper)报告。 数据源是一个很大的XML文件(大约10万行,1.5Mb) 该机器是具有4Gb RAM的3Ghz双核 那么,如何改善报表填充性能? 问题答案: 问题 看来问题出在XPath引

  • 问题内容: 从最近开始,在Eclipse Galileo中以调试模式运行程序要慢得多。 我不知道有什么变化。 您知道可能是什么原因吗?正常运行它不是问题。 问题答案: 另一个“调试中断”是方法进入/退出断点的使用。 您是否尝试一次删除 所有 断点定义? 有时我认为Eclipse与其某些内部/显示状态不同步。也许您应该尝试设置新的工作空间(而非副本)。有时这可以帮助我从虚假功能中恢复过来。 这是您可

  • 问题内容: 乔恩·斯凯特(Jon Skeet)最近在他的博客上提出了一个有趣的编程主题:“我的抽象中有一个漏洞,亲爱的Liza,亲爱的Liza”(强调): 我有一套- 实际上。我想从中删除一些项目……许多项目可能不存在。实际上,在我们的测试案例中,“删除”集合中的所有项目 都不 在原始集中。这听起来(确实 是 )非常容易编写。毕竟,我们需要帮助我们,对吧? 我们在命令行上指定“源”集的大小和“删除

  • 问题内容: 正如此处详细说明并在此处确认的那样,Oracle在通过JDBC查询数据时返回的默认行数为10。我正在开发一个必须从我们的数据库中读取和比较大量数据的应用程序。我以为,如果我们增加到1000左右,那么我们的应用程序性能肯定会更快。事实证明,它的 执行速度较慢 ,大约 降低 了20%。 然后,我们决定将数字从10逐渐增加,并观察其性能。通过将其设置在100到200之间,我们已经看到大约10

  • 问题内容: 我有一个非常快速的RESTful服务。我正在本地主机上对其进行测试。客户端正在使用Spring REST模板。我从使用幼稚的方法开始: 当我提出许多此类请求时,出现以下异常: 这是由于未关闭连接并使其处于TIME_WAIT状态而引起的。当临时端口用尽时,该异常开始发生。然后执行将等待端口再次释放。我看到了长时间休息的最佳表现。我得到的速率几乎是我所需要的,但是这些TIME_WAIT连接

  • 问题内容: 我的Java代码和MySQL数据库之间的连接速度非常慢,这是一个问题。我不知道瓶颈在哪里。 我的程序或多或少是一个聊天机器人。用户输入内容后,我的程序将句子分解为单词,然后将每个单词的单词发送到数据库。如果在该处找到了某些内容,则用户将获得输出。该数据库位于外部服务器上,但我也尝试连接到我旁边的PC。两者都很慢。 我通常在另一个工作正常的地方尝试了一次连接,而且在大多数情况下都很快。

  • 问题内容: 我正在使用Java为某些文件生成MD5哈希。我需要为多个文件生成一个MD5,总大小约为1 GB。这是我的代码: } 这似乎永远存在。如何提高效率? 问题答案: 您可能要使用Fast MD5 库。它比Java内置的MD5提供程序快得多,并且获取哈希的过程非常简单: 请注意,速度较慢也可能是由于文件I / O速度较慢所致。