首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tomcat :如何打开jdbc:oracle连接的堆栈跟踪?

tomcat :如何打开jdbc:oracle连接的堆栈跟踪?
EN

Stack Overflow用户
提问于 2013-01-16 18:31:57
回答 3查看 2K关注 0票数 2

让web应用程序跨多个位置运行,

通过在linux上运行以下命令,我可以看到许多连接堆积:

代码语言:javascript
复制
ps -ef|grep LOCAL

显示具有进程id的活动oracle连接的计数,并且连接计数每小时增长5-7个数字。几个小时后,应用程序变慢,最终需要重新启动tomcat服务器。

因为,我能够看到连接的增长,有没有办法获得这些连接的来源,找出是什么类或对象创建了这些已建立的连接?

而且我没有使用Tomcat连接池,我试图通过发出kill -3 tomcat pid来生成线程转储,但对我没有任何用处,因为我无法理解它们,甚至尝试过线程分析器。

有没有什么简单的方法可以让与这些已建立的连接相关联的发起者类获得一个小提示,使用一些tomcat功能,或者通过任何其他方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-17 17:36:49

JProfiler中,您可以使用JDBC探测来获取打开连接的堆栈跟踪。您可以在时间线中选择连接

并跳转到events视图

您可以在其中选择“打开的连接”事件。在下部窗格中,将显示关联的堆栈跟踪。

免责声明:我的公司开发JProfiler

票数 3
EN

Stack Overflow用户

发布于 2013-01-16 18:57:25

您可以使用集成开发环境搜索javax.sql.DataSource.getConnection()的使用情况。

如果您在调试模式下启动tomcat,您可以查找connection类的实例(并看到它们不断增加)。此外,在构造函数上放置断点将在创建它们的过程中捕获它们。

但实际上,您应该使用连接池。这是解决你的问题的最简单的方法。

票数 1
EN

Stack Overflow用户

发布于 2013-01-16 18:58:42

也许这两个工具可以帮助您确定是什么降低了服务器应用程序的性能。

jmeter

ab benchmarking tool

由于一些简单的实现问题,性能也可能会变慢。对于web应用,您可能希望使用NIO (面向缓冲区的非阻塞IO),而不是IO,而且您可能需要进行大量的字符串连接(使用StringBuffer)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14356308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档