如何解决WSO2 API Manager 3.1.0中的高CPU使用率-线程旋转阻塞线程
我们正在运行WSO2 API Manager 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)
有人以前遇到过这个问题吗?
解决方法
马尔法里斯
在描述中提到的线程是一个随产品一起运行的反应堆线程。因此,这并不意味着该线程正在发生高使用率。
观察CPU峰值时捕获线程使用情况和线程转储。
线程使用情况
ps -C java -L -o pcpu,cpu,nice,state,cputime,pid,tid > thread-usage.txt
线程转储
jstack <pid> > thread-dump.txt
线程使用情况将为您提供有关CPU使用率更高的线程的信息,并且您可以通过使用线程转储映射转换为Hexa值的线程ID来分析线程的堆栈跟踪。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。