【发布时间】:2020-03-06 10:04:02
【问题描述】:
我正在像这样初始化 Netty 线程池:-
bossGroup = new EpollEventLoopGroup(1);
workerGroup = new EpollEventLoopGroup(1);
这为在分配有 40 个 vCPU 的 VM 上运行的单个应用程序创建了 80 多个线程。有没有办法可以减少这些线程?
是不是预计服务器和客户端的数量会增加?
使用 Netty final 4.1.32
【问题讨论】:
-
使用 Netty 4.1.32 最终版
-
如果您将 0 传递给该构造函数(或其本身传递 0 的重载之一),Netty 将仅使用 2 * 可用处理器,所以我不相信您正在使用它。请提供minimal reproducible example。
-
感谢您的回答。我当然会尝试提供一个可重现的例子。但是,如果应用程序有上面粘贴的这两行代码来初始化 EpollEventLoopGroup - 然后对于运行 40 个 vCPU 的应用程序 - 是否可以粗略估计 epollWait0 中有多少线程并具有堆栈跟踪在下一条消息中给出
-
io.netty.channel.epoll.Native.epollWait0 (bci=0, native 方法) io.netty.channel.epoll.Native.epollWait (Native.java:114, bci=19, c2 ) io.netty.channel.epoll.EpollEventLoop.epollWait (EpollEventLoop.java:253, bci=99, c2) io.netty.channel.epoll.EpollEventLoop.run (EpollEventLoop.java:278, bci=73, c2 osr - bci: 0) io.netty.util.concurrent.SingleThreadEventExecutor$5.run (SingleThreadEventExecutor.java:909, bci=44, 解释器) io.netty.util.concurrent.FastThreadLocalRunnable.run (FastThreadLocalRunnable.java:30, bci=4 , 解释器) java.lang.Thread.run (Thread.java:748, bci=11, 解释器)
-
应该只有 2 个,每组一个。 (也许您正在设置更多您没有向我们展示的内容。)
标签: java performance netty