Я запускаю сервер на netty и выяснил, что некоторые потоки, инициализированные приложением Java-сервера, через некоторое время начинают есть 100% CPU. Я попытался инициализировать группу босса и рабочего с различным количеством потоков, но результат такой же.netty ест 100% CPU
В чем причина этого?
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup(50);
try {
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast("ReadTimeOutHandler", new ReadTimeoutHandler(20));
ch.pipeline().addLast(new streamDecoder());
ch.pipeline().addLast(new streamEncoder());
ch.pipeline().addLast(new validationHandler());
ch.pipeline().addLast(new streamDecryptor());
ch.pipeline().addLast(new streamEncryptor());
ch.pipeline().addLast(new msgValidatedHandler());
}
})
.option(ChannelOption.SO_BACKLOG, 128)
.childOption(ChannelOption.SO_KEEPALIVE, true);
Какие темы потребляют 100% -ный процессор? Это поток Netty? Также почему 50 нитей для рабочей группы? – Sneh
Я вижу, что количество потоков постоянно увеличивается и никогда не уменьшается. 50 тем для рабочей группы были настроены для более быстрой обработки многочисленных параллельных соединений. Однако уменьшилось до 5 работает очень хорошо. – George
Вы пробовали создавать дампы потоков, чтобы увидеть, какой код выполняет? –