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



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

我有两个问题:

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

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

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

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

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

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

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


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

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

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

最新更新