我想使用Java Netty为来自客户端的大量持久连接创建一个TCP服务器。换句话说,想象那里有1000个客户端设备,它们全部创建并维护与TCP服务器的持久连接。在这些持久连接中的每一个之间都会有合理数量的流量(主要是文本行)来回往返。如何确定NioEventLoopGroup的老板和工作组中使用的最佳线程数?
我的理解是,创建连接时,Netty将创建一个SimpleChannelInboundHandler<String>
对象来处理连接。创建连接后,将channelActive
调用处理程序方法,并且每次从客户端获取新消息时,messageReceived
都会调用该方法(或channelRead0
Netty 4.0.24中的方法)。
我的理解正确吗?
如果我有长时间运行的代码要在messageReceived中运行,该怎么办-我是否需要在另一个线程(java.util.Thread)中启动此代码?
如果我的messageReceived方法阻塞某件事或需要很长时间才能完成,该怎么办?这会使Netty陷入停顿吗?
基本上,我需要编写一个TCP套接字服务器,该服务器可以尽快为大量持久连接提供服务。
NioEventLoopGroup
处理程序中的线程数以及如何使用任何线程的指南?任何帮助将不胜感激。
如何确定NioEventLoopGroup的老板和工作组中使用的最佳线程数?
不要忘记将-XmsYYYYM和-XmxYYYYM添加为您的VM属性,因为如果没有这些属性,当JVM未使用所有内核时,您可能会遇到这种情况。
如果我有长时间运行的代码要在messageReceived中运行,该怎么办-我是否需要在另一个线程(java.util.Thread)中启动此代码?
如果我的messageReceived方法阻塞某件事或需要很长时间才能完成,该怎么办?
这会使Netty陷入停顿吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句