Glassfish线程池,接受器线程,HTTP最大连接数

时间:2015-10-13 06:54:36

标签: java multithreading glassfish request connection

请参阅附图,请帮助我理解线程池(最大和最小线程池大小),接受器线程及其最大连接数和HTTP最大连接数之间的关系。

线程池:

enter image description here

HTTP:

enter image description here

传输TCP:

enter image description here

1 个答案:

答案 0 :(得分:8)

首先我会给你一些官方文件

线程池

线程池是服务器可以处理的最大并发请求数。服务器有一个连接队列,等待线程处理。

请记住,一个线程将是一个很长的请求生命。也就是说,不仅在从套接字读取HTTP请求时,或者在向客户端写入HTTP响应时,而且一直在处理业务逻辑,等待数据库完成,写入日志文件,发送/接收WS mehtods,...

阅读:https://docs.oracle.com/cd/E18930_01/html/821-2431/abehk.html

HTTP最大连接数

HTTP Server正在侦听客户端请求,并且每个客户端都有一个关联的连接队列,其中请求排队等待来自线程池的线程。

以下是等待提供排队请求的线程所在的位置。

阅读:https://docs.oracle.com/cd/E18930_01/html/821-2431/abegk.html

传输接受器线程

是否表示随时可以在accept mode中为每个侦听套接字保存服务器的线程数。 Oracles文档建议将此数字设置为低于CPU数量的数量。

也就是说,这是同时读/写的套接字数。你可以想到与线程池的直接关系,但是记住一个线程不仅要从/向客户端读/写,还要处理请求。

阅读:http://docs.oracle.com/cd/E18930_01/html/821-2431/gkxjt.html

我的解释

因此,您的服务器将为每个客户端(侦听套接字)设置一个队列,其中只能有最大连接数。此连接将由线程池处理,同时它不能超过接受者线程处理/接受的套接字。

如果客户请求等待超时,则会被拒绝。 最小线程池可确保您拥有最少的线程,随时可以进行处理。并且最大连接数会限制您可以等待的侦听套接字的总数。如果超出此最后限制,将拒绝新连接。

希望它有所帮助。