Tomcat:当连接数超过线程数时会发生什么?

Cra*_*hax 4 java tomcat spring-boot

根据此链接,属性 server.tomcat.max-connections 和 server.tomcat.max-threads 确定应用程序中的最大连接数和最大线程数。

我有两个问题:

  1. 如果在给定时刻连接数超过线程数会发生什么?没有得到线程的连接会发生什么?

  2. 如果服务器必须处理比 server.tomcat.max-connections 多的请求,会发生什么?它会忽略在线程连接数达到最大值后到达的请求吗?

Ste*_*n C 7

如果在给定时刻连接数超过线程数会发生什么?没有得到线程的连接会发生什么?

他们将等待工作线程可用。

Tomcat 使用“接受队列”来保持接受它们和将它们传递给工作线程之间的连接。控制这个的 Tomcat 配置参数是:

acceptCount:当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度。队列已满时收到的任何请求都将被拒绝。默认值为 100。

(来源https://tomcat.apache.org/tomcat-8.0-doc/config/http.html


如果服务器必须提供比 多的请求,会发生什么server.tomcat.max-connections?它会忽略在线程连接数达到最大值后到达的请求吗?

根据上面的内容,连接将被接受到队列限制,然后被拒绝。我认为这意味着客户端将获得 TCP/IP 级别的“连接被拒绝”。

(如果客户端超时并关闭来自客户端的 TCP/IP 连接,排队的请求会发生什么情况并不完全清楚。)