我们有一个企业 java 应用程序(ear - 几个 ejb 和一个 web 应用程序)部署到 weblogic 10 上并使用 Sun java 5。在很少的用户负载下,响应时间、CPU 和内存使用情况很好,但如果我们将并发用户增加到 > ;100 我们在一段时间后看到巨大的 CPU 峰值(例如:- 100 个用户的负载测试,CPU 在超过 30 分钟的测试后变得很高)。 我们想使用 hprof 来分析应用程序并收集统计信息,但只想在 CPU 较高时(即测试 3o 分钟后)执行此操作,有没有办法做到这一点?
我无法使用 jmap,因为我们使用的是 Sun java 5。
We have an enterprise java application(ear - few ejb's and a webapp) deployed on to weblogic 10 and using Sun java 5. The response time , CPU and memory usage is fine under few users of load but if we increase the concurrent users to >100 we see huge CPU spikes after some time (for eg:- load test with 100 users, the CPU goes to high after more than 30 minutes of test). We wanted to use hprof to profile the app and collect the statistics, but wanted to do it only when CPU is high i.e after 3o minutes of the test, is there a way to do it?
I cannot use jmap because we are using Sun java 5.
发布评论
评论(3)
CPU 的巨大峰值可能表明 GC 正在运行。 如果是这样,这将不会显示在分析器中。 您可以使用 -verbosegc 运行来查看 GC 何时运行。 (或者使用jconsole)
Huge spikes in CPU can be an indication the GC is running. If so, this will not show up in the profiler. You can run with the -verbosegc to see when the GC is running. (Or use jconsole)
这本质上是 JVM 特定的。 因此,您需要指定您使用的 JVM(Sun/BEA/IBM 等)。
在弄清楚这一点时,请考虑将 Web 容器中的会话超时设置为 60 秒,然后重新运行测试。
This is intrinsicly JVM specific. Hence you need to specify which JVM you use (Sun/BEA/IBM etc).
While figuring that out, consider setting the session timeout in your webcontainer down to 60 seconds and rerun the test.
如果没有别的办法,您可以尝试以下几个选项:
我很高兴后者不是每个人都喜欢的,但它最终会让你做你想做的事。
If nothing else, a couple of options you could try are:
I appreciate the latter isn't everybody's cup of tea, but it will ultimately allow you to do what you want to do.