tomcat - netty , tomcat 线程模型

标签 tomcat websocket threadpool netty

我是这方面的新手,如果我的问题对于有经验的 netty 和 tomcat 用户来说太天真了,我很抱歉。

我正在运行一个 Netty websocket 服务器(使用示例代码并在端口 8090 上运行)通过 tomcat 中的 spring 配置(在端口 8080 上运行)。我正在尝试了解两者的线程模型以及它的整体工作原理。

据我了解,tomcat 默认设置 maxThreads = 200(事件线程的最大数量)。 而 netty 使用 boss 线程来创建和连接/绑定(bind)套接字,然后将它们传递给工作线程,工作线程执行实际的异步 I/O。

现在我正在努力理解:

  • 如果 Netty 使用的线程将从 tomcat 池中获取,从而减少事件线程的数量)?

  • 对于每个 websocket 连接,都会分配和使用一个单独的线程(我对 websocket 的实现不是很清楚,但我认为这个问题的答案应该是否定的)。

  • 总体而言,它会如何影响同时连接到 webapp 和 websocket 服务器的客户端数量?

编辑:

相应地,在对 weboscket 服务器进行编码时,有什么具体的要点应该牢记在心吗?

最佳答案

在 Netty 中,您通过将 Executor 传递给构造函数来指定 ThreadPool。因此,只要您不使用与在 Tomcat 中使用的相同的池,它就不会影响可用线程。

Netty 的 Webseocket 实现可以与其 NIO 传输一起使用。在这种情况下,您将在连接之间共享多个线程。所以不存在从连接到线程的 1:1 映射。

关于tomcat - netty , tomcat 线程模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11464430/

相关文章:

java - 运行程序60分钟,每个线程使用不同的ID

c++ - 有没有办法为任何函数编写通用代码,使其可以(异步地)执行并从线程池获得返回值?

spring - 从 JNDI 为 Spring Boot 设置 Spring @Profile

java - 无法在Eclipse中启动通过Maven运行的tomcat

ios - Web Socket 无法在 iOS 中使用 objective-c 打开

java - 处理线程池隔离?

java - 关于使用小程序检测私有(private)IP地址的建议

java - Tomcat/SQL Server/Spring - 当 setStructured 参数由 JNDI 配置引起时,使用 SQLServerCallableStatement 抛出异常

javascript - 网站登录系统-使用websocket服务器进行身份验证

javascript - 回复消息的 WebSocket 回调