performance - JBoss CPU利用率问题

标签 performance jboss cpu-usage josso

我正在将JBoss AS 4.2.3与接缝框架一起使用。我的CPU使用率随着用户数量的增加而增加,仅80位用户就达到了99%。我们还使用带有mod_jk的Hibernate,EJB3和Apache进行负载平衡。

当我进行线程转储时,所有可运行的线程都通过以下跟踪进行相同的 Activity :

at java.net.SocketInputStream.socketRead0(Native Method) 
at java.net.SocketInputStream.read(SocketInputStream.java:129) 
at org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:1012) 
at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:1091) 
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:384) 
at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:366) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
at java.lang.Thread.run(Thread.java:662)

我无法用堆栈跟踪解释它。我还发现,即使用户已注销,线程处于相同状态的CPU使用率仍然保持不变。

最佳答案

这些线程正在尝试从套接字连接读取。在这种情况下,他们正在等待下一个请求从Apache中的mod_jk发送到服务器。这是很正常的,它们可能不是CPU使用率的原因。

此时,您确实需要通过分析器运行应用程序。

如果您无法在系统上运行探查器(即它是生产箱),那么最好的办法是开始每隔几秒钟就开始进行许多堆栈转储,然后手动将它们与线程ID相匹配。您需要查找正在运行代码的线程,并且转储之间似乎没有变化。

这是一项非常繁琐的任务,并且无法始终获得清晰的结果,但是如果没有分析器或某种检测手段,您将无法找到所有CPU的运行方向。

关于performance - JBoss CPU利用率问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6330565/

相关文章:

algorithm - 如何根据点列表有效地计算间隔列表?

java - 使用 JBoss EWS 2.0 进行集群

java - slf4j + log4j2 不写入文件

Java降低CPU使用率

haskell - Haskell 和流融合不断增加 CPU 消耗

r - 记住 Rcpp 函数?

java - Kafka 消费者配置/性能问题

c# - 为什么在函数中使用名称参数实际上会生成更多代码?

ssl - jboss-as-maven-plugin 通过 https 部署

benchmarking - Flink 和 Gelly 无法实现高 CPU 利用率