我有一个在 Jetty 上运行的 wicket+spring+hibernate 应用程序。当我开始使用 VisualVM (jdk 1.7.0_9) 对其进行 CPU 分析时,它首先会在控制台打印时停止几分钟:
Profiler Agent: 250 classes cached.
Profiler Agent: 250 classes cached.
这些行重复了大约 20 次,然后 VisualVM 表示它已经开始检测并检测了大约 8000 种方法。
现在,在此之后,我单击 Web 应用程序上的一个按钮,应用程序再次完全挂起几分钟,同时控制台打印出如下几行:
Profiler Agent: Redefining 100 classes at idx 100, out of total 336
在此之后,我得到了分析结果,但它们几乎毫无用处,因为几乎 99.6% 的时间都花在了
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()
这使得 VisualVM 完全无法使用。任何猜测可能是这里的罪魁祸首?
我正在运行 Jetty 8.1.2.v20120308
最佳答案
我建议先从 CPU 采样开始。一旦您知道出了什么问题,您就可以切换到分析以获取详细信息。请务必阅读Profiling With VisualVM, Part 1和 Profiling With VisualVM, Part 2获取有关如何设置 Jetty 服务器分析的更多信息。
关于使用visualvm分析 jetty 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13119607/