gpt4 book ai didi

java - 应用程序服务器过度使用 CPU 的原因

转载 作者:行者123 更新时间:2023-11-29 06:23:59 24 4
gpt4 key购买 nike

我们正在使用 oracle 在 JBOSS 中运行一个 JAVA 应用程序。我们使用了 Seam 和 Hibernate 框架。我们面临的问题是,当我们启动应用程序服务器时,cpu 利用率增加,一小时后我们发现 CPU 利用率接近到 90%。这很奇怪,我无法确定问题所在。

请帮助。提前致谢。

干杯,德瓦拉克 enter image description here

最佳答案

理想情况下,您可以使用分析器来追踪问题。如果您不能在它所在的环境(如生产环境)中使用探查器,请尝试在其他地方重现它并在那里附加一个探查器。但这通常很困难,所以这里有一个技巧,我已经多次使用它来从命令行查找生产中 CPU 使用率的原因:

watch -n1 'jstack [pid] | grep -A 1 RUNNABLE | grep -v RUNNABLE | grep -v \\-\\- | grep -v socketRead0 | grep -v socketAccept`

如果您只看一小段时间,您可能会看到调用了一些常用方法。接下来将完整的 jstack 输出抓取到文件中:

jstack [pid] > jstack.log

现在在文件中搜索您经常看到的其中一种方法。从它的堆栈跟踪中,您通常可以找到负责磨 CPU 的代码。如果什么都没有出现,那么您的垃圾收集时间可能会过长,您只需要增加内存即可。您可以使用:

`jmap -heap [pid]`

更好地了解内存使用情况。更好的是你可以附上 jvisualvm或商业分析器(如 YourKit )随着时间的推移以图形方式查看它。我也偶尔使用过 watch -n1 'jmap -heap [pid]'

关于java - 应用程序服务器过度使用 CPU 的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6159821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com