首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Sun Java 5中对正在运行的应用程序使用hprof

在Sun Java 5中对正在运行的应用程序使用hprof
EN

Stack Overflow用户
提问于 2009-05-17 02:20:04
回答 3查看 537关注 0票数 0

我们有一个部署在WebLogic10上的企业级java应用程序(ear-少数ejb和一个webapp),使用Sun java 5。在负载用户较少的情况下,响应时间、CPU和内存使用率都很好,但是如果我们将并发用户数增加到>100,则会在一段时间后看到巨大的CPU峰值(例如:-使用100个用户进行负载测试,测试超过30分钟后CPU会变得很高)。我们想使用hprof来分析应用程序并收集统计数据,但只想在CPU较高的时候这样做,即在测试30分钟后,有什么方法可以做到吗?

我不能使用jmap,因为我们使用的是Sun java 5。

EN

回答 3

Stack Overflow用户

发布于 2009-05-17 06:11:49

CPU中的巨大峰值可能表明GC正在运行。如果是这样,这将不会显示在分析器中。您可以使用-verbosegc运行,以查看GC何时运行。(或使用jconsole)

票数 1
EN

Stack Overflow用户

发布于 2009-05-17 04:07:20

这本质上是特定于JVM的。因此,您需要指定您使用的JVM (Sun/BEA/IBM等)。

在弄清楚这一点的同时,考虑将webcontainer中的会话超时设置为60秒,然后重新运行测试。

票数 0
EN

Stack Overflow用户

发布于 2009-05-17 04:19:42

如果没有其他选择,您可以尝试以下几个选项:

  • 当CPU变高时,只需做几次CTRL+BREAK,看看你是否能“观察”线程倾向于的地方(在UNIX上,你可以用一个暂时逃脱我的mind);
  • with hprof的信号号来调用进程的,不管怎样,只要在整个时间内分析,看看它是否能提供线索--如果它是你感兴趣的CPU高的地方,那么这可能会占用大部分时间,即使你最初在低CPU下运行了一段时间;从程序本身进行分析,请考虑使用一些通过ThreadMXBean.提供的线程分析调用(

我理解后者并不是每个人都喜欢的,但它最终会让你做你想做的事情。

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

https://stackoverflow.com/questions/873766

复制
相关文章

相似问题

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