netty,tomcat线程模型

netty,tomcat线程模型,tomcat,websocket,threadpool,netty,Tomcat,Websocket,Threadpool,Netty,我是这方面的新手,如果我的问题对于经验丰富的、烦躁的tomcat用户来说太幼稚,我很抱歉 我正在运行一个Netty websocket服务器(使用示例代码并在端口8090上运行),该服务器通过tomcat内部的spring配置(在端口8080上运行)。我试图了解这两种线程模型,以及它的总体工作原理 据我所知,deafult的tomcat设置了maxThreads=200(活动线程的最大数量)。 而netty使用boss线程创建和连接/绑定套接字,然后将它们传递给工作线程,工作线程执行实际的异步I

我是这方面的新手,如果我的问题对于经验丰富的、烦躁的tomcat用户来说太幼稚,我很抱歉

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

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

现在我正在努力理解:

  • Netty使用的线程是否会从tomcat池中获取,从而减少活动线程的数量

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

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

编辑:


因此,在编写Webosket服务器的代码时,是否有任何特定的要点需要记住?

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


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

关于第一部分-如果通过执行程序
声明线程池。newCachedThreadPool()
,我知道它将是一个不同的池,对吗?第二部分,你能再解释一下吗?如果你的服务器使用的是NioServerSocketChannelFactory,默认情况下,Netty将使用2*Runtime.getRuntime().availableProcessors()工作线程来处理连接。传入的连接是跨线程的负载平衡,除非管道中有执行处理程序,否则在连接的整个生命周期内,每个连接都保证由同一线程处理。@johnslr:谢谢您的回复。我是netty的新手,我想知道除了netty api文档之外,我在哪里可以找到关于所有这些重要信息片段的好文档。netty很棒,但我无法找到好文档,因此有许多基本问题。我不知道它是否能回答您所有的问题,但一定要查看。但是请注意,Netty 4.0中有一些重要的变化。