具有持久连接的NioEventLoopGroup的线程数

马克

我想使用Java Netty为来自客户端的大量持久连接创建一个TCP服务器。换句话说,想象那里有1000个客户端设备,它们全部创建并维护与TCP服务器的持久连接。在这些持久连接中的每一个之间都会有合理数量的流量(主要是文本行)来回往返。如何确定NioEventLoopGroup的老板和工作组中使用的最佳线程数?

我的理解是,创建连接时,Netty将创建一个SimpleChannelInboundHandler<String>对象来处理连接。创建连接后,将channelActive调用处理程序方法,并且每次从客户端获取新消息时,messageReceived都会调用该方法(或channelRead0Netty 4.0.24中的方法)。

  1. 我的理解正确吗?

  2. 如果我有长时间运行的代码要在messageReceived中运行,该怎么办-我是否需要在另一个线程(java.util.Thread)中启动此代码?

  3. 如果我的messageReceived方法阻塞某件事或需要很长时间才能完成,该怎么办?这会使Netty陷入停顿吗?

基本上,我需要编写一个TCP套接字服务器,该服务器可以尽快为大量持久连接提供服务。

  1. 是否有关于NioEventLoopGroup处理程序中的线程数以及如何使用任何线程的指南?

任何帮助将不胜感激。

马克西姆

如何确定NioEventLoopGroup的老板和工作组中使用的最佳线程数?

  • 关于Boss Thread,如果您说您需要持久连接,那么使用大量的老板线程是没有意义的,因为老板线程仅负责接受新的连接。所以我只会使用一个老板线程。
  • 辅助线程的数量应取决于您的处理器内核。

不要忘记将-XmsYYYYM-XmxYYYYM添加为您的VM属性,因为如果没有这些属性,当JVM未使用所有内核时,您可能会遇到这种情况。

如果我有长时间运行的代码要在messageReceived中运行,该怎么办-我是否需要在另一个线程(java.util.Thread)中启动此代码?

  • 您真的需要这样做吗?可能您应该考虑以另一种方式来做逻辑,否则,您应该考虑为每个连接使用具有新线程的OIO。

如果我的messageReceived方法阻塞某件事或需要很长时间才能完成,该怎么办?

  • 您应该避免在处理程序中使用线程阻塞操作

这会使Netty陷入停顿吗?

  • 是的,确实如此。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有多线程持久化和刷新功能的Doctrine实体管理器

来自分类Dev

在哪里关闭具有多个线程的连接/文件/日志?

来自分类Dev

具有持久状态的MATLAB函数

来自分类Dev

具有持久URL的简单PHP代理

来自分类Dev

具有BlockingCollection的线程池

来自分类Dev

处理具有多个线程的单个连接

来自分类Dev

Django请求线程和持久数据库连接

来自分类Dev

具有notifyAll()的多个线程

来自分类Dev

具有ObservesProperty的多线程

来自分类Dev

具有持久数据的脱机网页缓存

来自分类Dev

BigQuery:具有可选参数的持久UDF

来自分类Dev

在Kubernetes中具有持久卷的redisinsights

来自分类Dev

具有持久共享订阅的Artemis JUnit

来自分类Dev

具有MaxDegreeOfParallelism的ParallelOptions和实际线程数

来自分类Dev

具有Coldfusion变量的Textarea的持久数据?

来自分类Dev

JPA:具有复合主键的持久实体

来自分类Dev

具有多线程持久化和刷新功能的Doctrine实体管理器

来自分类Dev

具有持久状态的MATLAB函数

来自分类Dev

具有持久URL的简单PHP代理

来自分类Dev

处理具有多个线程的单个连接

来自分类Dev

持久连接

来自分类Dev

具有多线程的printf()

来自分类Dev

具有4000个线程的Python线程

来自分类Dev

OMP的线程数多于内核,仍然具有相同的性能

来自分类Dev

如何在C中具有动态线程数

来自分类Dev

lastInsertID 返回 0,即使有持久连接

来自分类Dev

具有混合持久/非持久缓存节点的 Ignite 集群

来自分类Dev

连接之前的输入数组必须具有相同的维数

来自分类Dev

具有持久卷的 Traefik HA