netty , tomcat 线程模型

Rnd*_*ndm 4 tomcat threadpool websocket netty

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

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

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

现在我试图理解:

  • 如果 Netty 使用的线程将从 tomcat 池中取出并因此减少活动线程的数量)?

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

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

编辑 :

因此,在对 weboscket 服务器进行编码时是否应牢记任何特定要点?

Nor*_*rer 5

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

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