首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要有关解决线程泄漏问题的帮助

需要有关解决线程泄漏问题的帮助
EN

Stack Overflow用户
提问于 2019-06-18 11:51:31
回答 1查看 357关注 0票数 0

因此,我们创建了一个新的Netty4服务器,并在其上生成负载。主机线程的数量随着到服务器的TPS的增加而增长。此外,一旦负载测试结束,主机线程数就不会下降(这表明存在某种线程泄漏)。

我使用jstack获取了一个hprof转储,并将其连接到JProfiler。在线程视图中,线程的最大份额是格式。(请注意,这是负载测试几个小时后的线程转储,并且是它的一个实例,有数千个线程被卡住)。

26013处的线程转储:42.622.361

代码语言:javascript
运行
复制
Thread group "main":

Thread "I/O dispatcher 18120":
at sun.nio.ch.EPollArrayWrapper.epollWait(long, int, long, int)
at sun.nio.ch.EPollArrayWrapper.poll(long) (line: 269)
at sun.nio.ch.EPollSelectorImpl.doSelect(long) (line: 93)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(long) (line: 86)
at sun.nio.ch.SelectorImpl.select(long) (line: 97)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute() (line: 255)
at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(org.apache.http.nio.reactor.IOEventDispatch) (line: 104) at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run() (line: 588 at java.lang.Thread.run() (line: 748)

我不确定如何继续下去(例如,我不知道IO dispatcher应该引用什么executor服务)。

这个问题是关于如何解决像这样的线程泄漏问题的一般指导。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-19 12:12:43

因此,IO线程分派器是Apache HTTP客户端的一部分。

我们必须保留apache http客户端的缓存(更有学问的是,aws弹性搜索客户端,因为它们是按请求凭证https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-configuration-samples.html设置的)。任何时候我们看到从这个缓存中的客户端获取的新请求。

现在我们的负载测试抛出了许多具有不同凭据的请求。缓存不断变得越来越大,比客户端从缓存中过期的速度更快。每个客户端使用了越来越多的线程,直到我们耗尽它们。

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

https://stackoverflow.com/questions/56641529

复制
相关文章

相似问题

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