首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WSO2应用编程接口管理器3.1.0中的高CPU利用率-线程旋转(卡住线程)

WSO2应用编程接口管理器3.1.0中的高CPU利用率-线程旋转(卡住线程)
EN

Stack Overflow用户
提问于 2020-11-03 05:30:09
回答 1查看 487关注 0票数 0

我们运行的是WSO2应用程序接口管理器3.1.0版,并且经常遇到高CPU使用率的问题。在进行线程转储后,我们发现有一个线程持续运行了很长时间,我们怀疑这可能是问题的潜在根源。下面是线程堆栈跟踪:

代码语言:javascript
复制
"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)

以前有没有人遇到过这个问题?

EN

回答 1

Stack Overflow用户

发布于 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://dzone.com/articles/how-analyze-java-thread-dumps

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64653617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档