java - 查询运行缓慢

标签 java multithreading ibatis apache-commons-dbcp

我们有一个查询需要 3 小时才能完成。这在以前不是问题。之前,调用这个查询的代码部署在weblogic上,并使用后者自己的连接池管理器。

现在,由于该进程占用了大量内存,因此我们将这段代码取出并使其在自己的堆空间上运行。调用查询的请求是通过jms发出的。我还注意到我们使用的连接池管理器是 dbcp,使用其默认设置(最大连接数 = 8,最小连接数 = 0)。 jms 客户端是多线程的。

当我们通过接口(interface)(TOAD)执行查询时,只需要 2 秒,因此从这里我已经排除了“指责”数据库的可能性。

我想知道我可以从这里采取什么步骤来找到瓶颈。也许与连接池有关?

最佳答案

您应该使用 VisualVM 或线程转储等工具来检查线程正在做什么。他们只是在等待某些 IO 操作完成吗?是否有一些同步不良的代码等待的时间比需要的时间长得多?甚至可能是一个在三小时(或三个一小时)超时后停止的死锁?

关于java - 查询运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4512928/

相关文章:

javascript - Async.js 队列工作程序未完成

VB.net:我的线程安全列表解决方案真的安全吗?

java - MyBatis 中单个映射器方法中的多个语句

java - 如何为 Ibatis SqlTemplateClientMap 创建自己的回调

mysql - mysql的limits一般怎么用在iBatis上?

java - GPS 服务器连接中使用的最佳协议(protocol)是什么?

java - cassandra中的随机列获取

Java-填充重叠的多边形

Java POI 未设置上一个单元格超链接

java多线程