Итак, мы создали новый сервер Netty4 и создаем нагрузку на него. Количество потоков хоста растет в зависимости от TPS для сервера. Более того, как только нагрузочное тестирование закончится, количество потоков в хосте не уменьшится (что свидетельствует о какой-либо утечке потока).
Я взял дамп hprof с помощью jstack и подключил его к 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)
Я не уверен, что делать дальше (например, я понятия не имею, на что должен ссылаться диспетчер ввода-вывода службы исполнителя).
Этот вопрос предназначен для общего руководства о том, как бороться с такими проблемами, как утечка потоков.