【发布时间】:2015-10-13 06:54:35
【问题描述】:
【问题讨论】:
标签: java multithreading glassfish request connection
【问题讨论】:
标签: java multithreading glassfish request connection
首先我会给你一些官方文档
线程池是服务器可以处理的最大并发请求数。服务器有一个等待线程处理的连接队列。
请记住,线程的请求生命周期会很长。也就是说,不仅在从套接字读取 HTTP 请求,或者在向客户端写入 HTTP 响应时,而且一直在处理业务逻辑,等待 DB 完成,写入日志文件,发送/接收 WS 方法,...
阅读:https://docs.oracle.com/cd/E18930_01/html/821-2431/abehk.html
HTTP 服务器正在监听客户端请求,每个客户端都有一个关联的连接队列,其中的请求正在排队等待由 线程池 中的线程处理。
这里是等待服务排队请求的线程所在的位置。
阅读: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
因此,您的服务器将为每个客户端(侦听套接字)设置一个队列,其中不能超过 最大连接数。此连接将由 线程池 处理,同时它不能超过 Acceptor Threads 处理/接受的套接字。
如果客户端请求等待的时间超过 超时,它将被拒绝。 Min Thread Pool 确保您拥有最少的线程,准备好进行处理。 Max Connection Count 限制了您可以等待的 listen sockets 总数。如果超过最后一个限制,新的连接将被拒绝。
希望对你有帮助。
【讨论】: