我们的一个应用程序服务器出现了一个有趣(尽管相当严重)的问题:在某个时间点,运行我们的 Web 应用程序的 JVM 的 CPU 使用率开始上升并持续上升,直到应用程序最终减速到爬行。修复它的唯一方法是重新启动应用程序服务器软件。
- 应用服务器:Spring tc Server(因为服务器托管在别处,目前不知道具体版本)
- 应用程序:相对标准的 Spring 3 Web 应用程序(尽管我们确实使用了一个 in-JVM EHCache)
这给我带来了一个简单的问题;我们能做些什么来解决这个问题?
我考虑过使用 VisualVM(或其他一些 JVM 监控工具),但他们能做的最好的事情——在这种特殊情况下——给我一个线程转储,它仍然不会告诉我是什么占用了所有的 CPU 时间(除非我我错过了一些东西)。