【发布时间】:2019-06-18 03:51:31
【问题描述】:
因此,我们创建了一个新的 Netty4 服务器并对其产生负载。主机线程的数量随着服务器的 TPS 的增加而增长。此外,一旦负载测试结束,主机线程数不会下降(表明存在某种线程泄漏)。
我使用 jstack 进行了 hprof 转储并将其连接到 JProfiler。在线程视图中,线程的最大份额是格式。 (请注意,这是负载测试后几个小时的线程转储,是其中的一个实例,有数千个被困在其中)。
26013:42.622.361 处的线程转储
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 调度程序应该引用什么)。
这个问题是关于如何解决这样的线程泄漏问题的一般指导。
【问题讨论】:
标签: multithreading profiling threadpool