【问题标题】:Netty - Increase Worker Thread count with only one open socketNetty - 仅使用一个打开的套接字来增加工作线程数
【发布时间】:2015-07-12 16:50:04
【问题描述】:

我正在使用 Netty 来实现我的客户端/服务器架构。情况如下: 1.从1个客户端到服务器只打开1个套接字/连接 2.我创建了1个线程的bossgroup和3个线程的workergroup,并将它们分配给serverbootstrap。

现在,当我使用 htop 监控 cpu/线程时,我只看到服务器上正在运行 2 个线程(可能是 1 个老板和 1 个工作线程),但通常应该是 1 个老板和 3 个工作线程。为什么不创建这些工作线程?

【问题讨论】:

    标签: java multithreading sockets netty


    【解决方案1】:

    如果您使用的是 Netty 3(听起来像这样),线程将被延迟创建,并且由于您只有一个连接,因此无需创建另一个线程。

    【讨论】:

    • 嘿诺曼谢谢你的回答。我正在开发一种协议,其中两台服务器(A 和 B)之间的连接仅通过一个套接字创建。服务器 A 使用客户端引导程序打开到服务器 B 的套接字并保持该套接字打开。真正的客户端现在连接到服务器 A 并发送他们的消息。服务器 A 现在充当代理,并将所有带有 id 的客户端消息发送到服务器 B,该 id 保存在哈希图中。服务器 B 现在只创建一个线程来处理所有消息。我在 Eventgroup 中放入多少线程无关紧要,只执行一个线程来处理
    • 传入消息,因为 Netty 假设整个收入的顺序必须相同,但实际上数据包含更多消息
    • 服务器 B 要做加密工作,如下 CPU 一个核心满载,其他核心休眠。我需要一种为加密处理程序提供更多线程的方法,但似乎只有一个套接字是不可能的
    • 我使用 Netty 4.0.29
    • 我试图给处理程序一个 DefaultEventExecutorGroup,但仍然只有 2 个线程运行单个套接字的老板和工作线程。相比之下,我还实现了一个版本,其中在服务器 A 和 B 之间创建了多个套接字(对于每个真实客户端)。使用这种多套接字解决方案,我可以在工作组中为引导程序指定的所有线程执行的情况下达到最大 CPU 功率。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 2020-09-02
    • 2012-08-30
    • 1970-01-01
    相关资源
    最近更新 更多