2016-01-18 55 views
0

我有150个主题。Netty - 在java中同时发送消息的最佳方式

每个线程都有Netty客户端它连接到服务器。

我应该使用更多150个线程发送?

我应该使用75个线程发送?

我应该使用没有线程发送?

我的本地测试没有意义。 (我不能操作服务器超过50)

请帮助我。

+0

为什么你有150个线程? Netty仅使用'AMOUNT_OF_PROCESSORS * 2'线程发送其默认配置。您的高线程数似乎是一个设计问题 – Ferrybig

+0

hmm低线程会导致服务器收到数据时延迟。 – bot

+0

我的意思是......所有的数据不是在同一时间 – bot

回答

2

对此没有金科玉律。根据您的应用程序,您可以找到;

  • 只有一个线程与一个线程的连接足以使用机器的所有资源。
  • 在CPU的数量为2 *左右的情况下,CPU的数量足以使用机器的所有CPU。
  • 如果您有同步请求(而不是异步请求)和较高的网络延迟,您可能会发现大部分时间都在等待数据,在这种情况下,更多连接将有助于缓解此延迟。

我的选择是允许异步消息/请求,并允许单个连接使用所有的CPU /资源在机器上,如果因为虽然你可能会得到更好的结果,当你有150间繁忙的连接测试它是有道理的,在真实的世界中,他们可能并不都是同时活跃的。

+0

谢谢你的回答。客户端的“连接”不是同时激活,但服务器的writeAndFlush(发送)几乎是同一时间(50个客户端)我使用套接字选项TCP_NODELAY。谢谢你的好回答。 – bot

+0

@bot TCP_NODELAY最适合低延迟,但是您可能会发现它无法获得更高的吞吐量结果(因为它避免了数据的合并)值得在没有此选项的情况下测试吞吐量。 –

+0

啊...!谢谢,我明白了。 – bot

相关问题