繁体   English   中英

Java 高CPU线程 | JBOSS EAP 6.3 | 无法找到根本原因

[英]Java high CPU Threads | JBOSS EAP 6.3 | unable to get root cause

高度赞赏帮助和指导。

JBOSS 报告的问题是 CPU 利用率高 (>95%)。

  • JBOSS EAP 6.3 alpha 通过 windows 服务器上的 NSSM ( https://nssm.cc ) 配置为服务
  • 我已经捕获了线程转储并确定了高 CPU 利用率线程(总共 5 个),如下所示:nativeId(以十进制为底数):6428、2768、5904、6100 和 6840。这些线程每个消耗大约 15% 的 CPU .
  • 通过线程转储没有观察到死锁
  • 我没有编写部署的代码,也没有这些线程的源代码,所以作为交付/实施团队的一部分,我有点卡住了。

通过 psexplorer.exe 识别的高 CPU 线程

  • 对于这 5 个线程,堆栈跟踪的 2 种类型/变体如下:

    http-/0.0.0.0:8080-187 priority:6 - threadId:0x0000000022d29800 - nativeId:0x191c - nativeId (decimal):6428 - state:RUNNABLE stackTrace: java.lang.Thread.State: RUNNABLE at java.lang.Throwable.在 java.lang.Throwable.fillInStackTrace(Throwable.java:783) 处的 fillInStackTrace(本机方法)

    • locked <0x00000007b394a958> (a java.util.concurrent.ExecutionException) at java.lang.Throwable.(Throwable.java:310) at java.lang.Exception.(Exception.java:102) at java.util.concurrent.ExecutionException .(ExecutionException.java:92) at sun.nio.ch.CompletedFuture.get(CompletedFuture.java:78) at org.apache.tomcat.util.net.NioChannel.readBytes(NioChannel.java:597) at org.apache .coyote.http11.InternalNioInputBuffer.blockingRead(InternalNioInputBuffer.java:504) at org.apache.coyote.http11.InternalNioInputBuffer.fill0(InternalNioInputBuffer.java:449) at org.Z B6EFD606D118D0F62066E31419FF04CCZ.coyote.http11.InternalNioInputBuffer.access$100(InternalNioInputBuffer.java:50) at org.apache.coyote.http11.InternalNioInputBuffer$InputBufferImpl.doRead(InternalNioInputBuffer.java:528) at org.apache.coyote.http11.filters.IdentityInputFilter .doRead(IdentityInputFilter.java:116) at org.apache.coyote.http11.InternalNioInputBuffer.doRead(InternalNioInputBuffer.java:407) at org.apache.coyote.Request.doRead(Request.java:438) at org.apache. catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:357) at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.Z93F725A07423FE1C889F448 B33D21F46Z:422) at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:389) at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193) at org.apache.commons.fileupload .MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:999) at org.apache.commons.fileupload.MultipartStream$ItemInputStream.close(MultipartStream.java:943) at org.apache.commons.fileupload.MultipartStream$ItemInputStream.close(MultipartStream .java:922) at org.apache.commons.io.IOUtils.closeQuietly(IOUtils.java:280) at org.apache.commons.io. IOUtils.closeQuietly(IOUtils.java:223) at org.apache.commons.fileupload.util.Streams.copy(Streams.java:123) at org.apache.commons.fileupload.util.Streams.copy(Streams.java: 70) at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:347) at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115) at com.newgen.wfdesktop.servlet .filehandler.processRequest(filehandler.java:70) at com.newgen.wfdesktop.servlet.filehandler.doPost(filehandler.java:122) at javax.servlet.http.HttpServlet.service(HttpServlet.Z93F725A07423FE1C 889F448B33D21F46Z:754) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) at org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:214) at com.newgen.ibps.security.xss.SECRequestValidator.doFilter(SECRequestValidator.java:231) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 在 Z4D236D9A2D102C5FE6AD1C50DA4BEC.wfilterSession.newgen. r.doFilter(WDSessionCheckFilter.java:378) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at com .newgen.wfdesktop.filter.WDClickJackFilter.doFilter(WDClickJackFilter.java:179) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain .java:214) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231) at org.ZB6EFD606 D118D0F62066E31419FF04CCZ.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:420) at org.jboss.as.web.security.SecurityContextAssociationValve.invoke( SecurityContextAssociationValve.java:169) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) at org.apache.catalina org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Z93F72) 5A07423FE1C889F448B33D21F46Z:340) at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:353) at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:911) at org.apache.tomcat .util.net.NioEndpoint$ChannelProcessor.run(NioEndpoint.java:920) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java :615) 在 java.lang.Thread.run(Thread.java:745) 锁定可拥有同步器:
    • <0x000000069bcbde88>(java.util.concurrent.ThreadPoolExecutor$Worker)

    http-/0.0.0.0:8080-146 priority:6 - threadId:0x0000000024579000 - nativeId:0xad0 - nativeId (decimal):2768 - state:RUNNABLE stackTrace: java.lang.Thread.State: RUNNABLE at java.lang.Throwable.在 java.lang.Throwable.fillInStackTrace(Throwable.java:783) 处的 fillInStackTrace(本机方法)

    • locked <0x00000007b4558488> (a java.nio.channels.ClosedChannelException) at java.lang.Throwable.(Throwable.java:250) at java.lang.Exception.(Exception.java:54) at java.io.IOException.( IOException.java:47) at java.nio.channels.ClosedChannelException.(ClosedChannelException.java:52) at sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:233) at sun.nio.ch.AsynchronousSocketChannelImpl.read( AsynchronousSocketChannelImpl.java:283) at org.apache.tomcat.util.net.NioChannel.readBytes(NioChannel.java:597) at org.ZB6EFD606D118 D0F62066E31419FF04CCZ.coyote.http11.InternalNioInputBuffer.blockingRead(InternalNioInputBuffer.java:504) at org.apache.coyote.http11.InternalNioInputBuffer.fill0(InternalNioInputBuffer.java:449) at org.apache.coyote.http11.InternalNioInputBuffer.access$100(InternalNioInputBuffer .java:50) at org.apache.coyote.http11.InternalNioInputBuffer$InputBufferImpl.doRead(InternalNioInputBuffer.java:528) at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:116) at org. apache.coyote.http11.InternalNioInputBuffer.doRead(InternalNioInputBuffer.java:407) at org.apache.coyote.Request.doRead(Request.Z93F725A07423FE1C889F448B33D 21F46Z:438) at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:357) at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:422) at org.apache.catalina .connector.InputBuffer.read(InputBuffer.java:389) at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193) at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java :999) at org.apache.commons.fileupload.MultipartStream$ItemInputStream.close(MultipartStream.java:943) at org.apache.commons.fileupload.MultipartStream$ItemInputStream.close(Mult ipartStream.java:922) at org.apache.commons.io.IOUtils.closeQuietly(IOUtils.java:280) at org.apache.commons.io.IOUtils.closeQuietly(IOUtils.java:223) at org.apache.commons .fileupload.util.Streams.copy(Streams.java:123) at org.apache.commons.fileupload.util.Streams.copy(Streams.java:70) at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase .java:347) at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115) at com.newgen.wfdesktop.servlet.filehandler.processReq uest(filehandler.java:70) at com.newgen.wfdesktop.servlet.filehandler.doPost(filehandler.java:122) at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) at javax.servlet.http .HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at com.newgen.ibps.security.xss.SECRequestValidator.doFilter(SECRequestValidator.java:231) at org.ZB6EFD606D118D0F62066E314.CatlApplicationChain.Zin.CatFilter( icationFilterChain.java:246) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at com.newgen.wfdesktop.filter.WDSessionCheckFilter.doFilter(WDSessionCheckFilter.java:378) at org.apache.catalina .core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at com.newgen.wfdesktop.filter.WDClickJackFilter.doFilter(WDClickJackFilter.java:179 ) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) 在 org.ZB6EFD606D118D 0F62066E31419FF04CCZ.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve. java:149) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:420) at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) at org.apache.catalina org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport Valve.java:97) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340) at org.apache.coyote .http11.Http11NioProcessor.process(Http11NioProcessor.java:353) at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:911) at org.apache.tomcat.util.net.NioEndpoint$ChannelProcessor.run (NioEndpoint.java:920) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.T 在 java.lang.Thread.run(Thread.Z93F725A07423FE1C889F448B33D21) 处的 readPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    • <0x000000069a402d48>(java.util.concurrent.ThreadPoolExecutor$Worker)

Hello ,所以高 CPU 使用率本身不是问题。 您需要进行一系列线程转储并使用Samurai或网站fastthread.io进行分析。

These threads are consuming around 15% of CPU each. 它们可能会消耗大量 CPU,但不会被阻塞。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM