Mar*_*arc 3 java sockets nio tcp netty
我想使用Java Netty为来自客户端的大量持久连接创建TCP服务器.换句话说,成像那里有1000个客户端设备,并且所有客户端设备都创建并维护与TCP服务器的持久连接.将存在合理数量的流量(主要是文本行),这些流量在每个持久连接中来回传递.如何确定NioEventLoopGroup的boss和worker组中使用的最佳线程数?
我的理解是,在创建连接时,Netty会创建一个SimpleChannelInboundHandler对象来处理连接.创建连接后,调用处理程序channelActive方法,每次从客户端获取新消息时,都会调用messageReceived方法(或Netty 4.0.24中的channelRead0方法).我的理解是否正确?如果我有长时间运行的代码在messageReceived中运行会发生什么 - 我是否需要在另一个线程(java.util.Thread)中启动此代码?如果我的messageReceived方法阻塞某些内容或需要很长时间才能完成,会发生什么?这会让Netty停滞不前吗?
基本上我需要编写一个TCP套接字服务器,它可以尽快为大量持久连接提供服务.是否有关于NioEventLoopGroup的线程数以及如何使用处理程序内的任何线程的指导?
任何帮助将不胜感激.
如何确定NioEventLoopGroup的boss和worker组中使用的最佳线程数?
不要忘记添加-XmsYYYYM和-XmxYYYYM作为您的VM属性,因为如果没有它们,您可以在JVM未使用所有核心时遇到问题.
如果我有长时间运行的代码在messageReceived中运行会发生什么 - 我是否需要在另一个线程(java.util.Thread)中启动此代码?
如果我的messageReceived方法阻塞某些内容或需要很长时间才能完成,会发生什么?
这会让Netty停滞不前吗?