答案 0 :(得分:8)
首先我会给你一些官方文件
线程池是服务器可以处理的最大并发请求数。服务器有一个连接队列,等待线程处理。
请记住,一个线程将是一个很长的请求生命。也就是说,不仅在从套接字读取HTTP请求时,或者在向客户端写入HTTP响应时,而且一直在处理业务逻辑,等待数据库完成,写入日志文件,发送/接收WS mehtods,...
阅读:https://docs.oracle.com/cd/E18930_01/html/821-2431/abehk.html
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
因此,您的服务器将为每个客户端(侦听套接字)设置一个队列,其中只能有最大连接数。此连接将由线程池处理,同时它不能超过接受者线程处理/接受的套接字。
如果客户请求等待超时,则会被拒绝。 最小线程池可确保您拥有最少的线程,随时可以进行处理。并且最大连接数会限制您可以等待的侦听套接字的总数。如果超出此最后限制,将拒绝新连接。
希望它有所帮助。