java - Tomcat:当连接数超过线程数时会发生什么?
问题描述
根据此链接,属性 server.tomcat.max-connections 和 server.tomcat.max-threads 确定应用程序中的最大连接数和最大线程数。
我有两个问题:
如果在给定时刻连接数超过线程数会怎样?没有得到线程的连接会发生什么?
如果服务器必须服务于 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 连接,队列中的请求会发生什么情况并不完全清楚。)
推荐阅读
- java - 如何在没有 .Method() 的情况下调用功能接口中的方法
- python - 我在我的程序中收到错误“TypeError: 'int' object doesn't support item assignment”
- javascript - 如何在 JavaScript 中获取复选框值
- php - TYPO3.CMS 9 LTS - cacheable extbase action but no cHash with new routing
- python - 捕获 PyCharms“停止进程”的异常
- python - 在 Psychopy 中播放视频时播放 4 种声音的随机序列?
- css - 用于在 wkhtmltopdf 中呈现 PDF 的多列 CSS
- python - KivyMD 0.103.0 导致“NavigationDrawerSubheader”错误
- git - 基于文件扩展名的备用散列函数
- sql-server - Windows 批处理文件只执行第一行