我们有一个Java ERP类型的应用程序。客户端与服务器之间的通信是通过RMI进行的。在高峰时段,最多可以有250位用户登录,其中大约20位用户正在同时工作。这意味着在高峰时段的任何给定时间,大约有20个线程处于活动状态。
服务器可以运行数小时而没有任何问题,但是突然的响应时间越来越长。响应时间可以是几分钟。

我们正在Windows 2008 R2和Sun的JDK 1.6.0_16上运行。我们一直在使用perfmon和Process Explorer来查看发生了什么。我们唯一奇怪的是,当服务器开始缓慢运行时,已打开的java.exe进程句柄数约为3500。

我只是好奇我是否应该遵循一些指导原则以查明问题所在。我应该使用什么工具? ....

最佳答案

您可以访问此应用程序的日志配置吗?

如果可以,则应将日志级别更改为“ DEBUG”。跟踪请求的DEBUG日志可以为您提供有关争用点的有用信息。

如果不行,探查器工具可以为您提供帮助:


VisualVM(免费的,好产品)
Eclipse TPTP(免费,但比VisualVM复杂)
JProbe(不是免费的,但功能非常强大。它是我最喜欢的Java分析器,但是价格昂贵)


如果应用程序已使用JMX控制点开发,则可以插入JMX查看器以获取信息。

如果您想给应用程序施加压力以触发问题(如果您想验证它是否是收费问题),则可以使用诸如JMeter之类的压力工具

关于java - 如何确定Java应用程序运行缓慢的原因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3558486/

10-09 15:59
查看更多