首页 文章

Tomcat连接器体系结构,线程池和异步servlet

提问于
浏览
24

我想了解Tomcat的BIO和NIO连接器的线程模型 . 我正在引用官方Tomcat 7文档中的连接器,可以找到here . 基于此,这是我所怀疑的:

  • acceptorThread(s) :这是单个或最多2个线程(如文档中所述),它仅负责接受进入的连接 . 这可以使用acceptorThreadCount进行配置,并建议多个机器可以使用两个以上 -

  • 这是为什么?

  • 这是否意味着同时打开的连接数量与服务器系统上允许的cpus数量与打开文件描述符数量成比例?

  • maxConnections(s)

  • 此设置与acceptCount之间的关系是什么,以及系统上打开的文件描述符的数量 .

  • 为什么NIO连接器(10000)的默认值比BIO(= maxThreads)高得多?

  • acceptCount :当所有请求处理线程都忙时,这是请求的队列 .

  • 当请求被放入此队列时,是否也为其分配了文件描述符?或者仅当请求被主动处理时,它是否使用文件描述符?

  • request processing threads :此池中的线程数由maxThreads和minSpareThreads属性配置 .

  • 此线程池与acceptorThreads之间的关系是什么?接受者线程是否会产生此池中的线程?

  • 据我所知,NIO模型对请求处理线程的效率高于BIO模型 . 它如何实现这种效率?

  • 正如我在各种来源中所读到的,NIO模型中的线程遵循每个请求范例的线程与BIO模型的每个连接范例的线程 . 此外,在NIO连接器模型中,实际请求处理被委托给不同的应用程序监视线程,而服务器的请求处理线程返回到线程池,以接受更多连接 . So, does this imply that the benefit of the NIO model will only be apparent if the connections to the server are of the HTTP Keep-Alive nature or if the application is using Servlet 3.0's asynchronous processing feature ?

  • Servlet 3.0

  • 使用Servlet 3.0时,应用程序servlet线程池的大小(相对于连接器线程池大小)应该达到最佳效率?

  • 当使用BIO模型和它们时,将如何处理请求(假设连接器线程仍然使用每个连接模型的线程)会有什么不同吗?

请注意:关于tomcat的所有讨论7 .

1 回答

  • 11

    acceptorThread(s):这是一个或最多2个线程(如文档中所述),它仅负责接受进入的连接 . 这可以使用acceptorThreadCount进行配置,并且建议多个机器可以使用两个以上 - 这是为什么?

    接受连接是一种成本非常低的操作,因此将多个线程专用于此任务是没有意义的 .

    这是否意味着同时打开连接的数量
    缩放cpus的数量与打开的文件描述符的数量
    允许在服务器系统上?

    不,它不是因为它在CPU方面是一个非常低成本的操作 . 对于文件描述符,每个接受的连接将使用文件描述符,因此服务器可以接受的最大连接数受限于可用文件描述符的数量 .

    maxConnections(s):此设置与acceptCount之间的关系是什么,以及系统上打开的文件描述符的数量 .

    maxConnections不能高于系统上打开文件描述符的数量 . 请记住,其他进程也使用文件描述符,因此可能希望对可用文件描述符使用maxConnections保守,假设maxConnections <文件描述符/ 2 .

    为什么NIO连接器的默认值要高得多
    (10000)比BIO(= maxThreads)?

    这是因为在NIO中,单个处理所有IO,而在BIO中,服务器需要创建/使用单独的每个线程连接 .

    acceptCount:当所有请求处理线程都忙时,这是请求的队列 . 将请求放入此队列时,是否也为其分配了文件描述符?

    是的,接受连接请求是正确的,但服务器尚未准备好提供请求,因此连接被放入队列中 . 这是完成以防止TCP /堆栈超时连接请求,从客户端的角度看,它可能看起来像服务器 . 换句话说,服务器说'我在这里,一旦我有资源就会处理你的请求' .

    或者仅当请求被主动处理时,它是否使用文件描述符?

    不 .

    希望这可以帮助 .

    问候,

    Slava Imeshev

相关问题