我们运行的是WSO2应用程序接口管理器3.1.0版,并且经常遇到高CPU使用率的问题。在进行线程转储后,我们发现有一个线程持续运行了很长时间,我们怀疑这可能是问题的潜在根源。下面是线程堆栈跟踪:
"HTTPS-Listener I/O dispatcher-3" #3286 prio=5 os_prio=0 tid=0x00007fb0e4e78000 nid=0xd05 runnable [0x00007fb072b56000]
java.lang.Thread.State: RUNNABLE
at org.apache.http.impl.nio.reactor.SessionOutputBufferImpl.flush(SessionOutputBufferImpl.java:167)
at org.apache.http.impl.nio.codecs.AbstractContentEncoder.flushToChannel(AbstractContentEncoder.java:103)
at org.apache.http.impl.nio.codecs.ChunkEncoder.write(ChunkEncoder.java:129)
at org.apache.synapse.transport.passthru.Pipe.consume(Pipe.java:159)
at org.apache.synapse.transport.passthru.SourceResponse.write(SourceResponse.java:279)
at org.apache.synapse.transport.passthru.SourceHandler.outputReady(SourceHandler.java:377)
at org.apache.http.impl.nio.DefaultNHttpServerConnection.produceOutput(DefaultNHttpServerConnection.java:312)
at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection.produceOutput(LoggingNHttpServerConnection.java:127)
at org.apache.synapse.transport.passthru.ServerIODispatch.onOutputReady(ServerIODispatch.java:87)
at org.apache.synapse.transport.passthru.ServerIODispatch.onOutputReady(ServerIODispatch.java:39)
at org.apache.http.impl.nio.reactor.AbstractIODispatch.outputReady(AbstractIODispatch.java:150)
at org.apache.http.impl.nio.reactor.BaseIOReactor.writable(BaseIOReactor.java:180)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:342)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:316)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:277)
at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105)
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:586)
at java.lang.Thread.run(Thread.java:748)以前有没有人遇到过这个问题?
发布于 2020-11-08 03:29:57
马尔法里斯
您在描述中提到的线程是一直与产品一起运行的反应器线程。因此,这并不意味着该线程出现了高使用率。
在观察CPU峰值时捕获线程使用情况和线程转储。
线程使用情况
ps -C java -L -o pcpu,cpu,nice,state,cputime,pid,tid > thread-usage.txt
线程转储
jstack <pid> > thread-dump.txt
线程使用率将为您提供有关消耗更高CPU的线程的信息,您可以通过将线程id转换为十六进制值与线程转储映射来分析线程的堆栈跟踪。
https://stackoverflow.com/questions/64653617
复制相似问题