[英]Tomcat: how to limit number of threads (not requests) in the entire application?
根据此链接:
server.tomcat.max-threads – 最高负载下服务器中的最大工作线程数。 换句话说,可以处理的最大并发请求数。
假设 tomcat 服务器收到的每个请求都会产生 3 个工作线程以从数据库读取。 这意味着对于 5 个请求,我们有 20 个线程(每个请求有 1 个线程和额外的 3 个工作线程)。 在这种情况下,我们是否将线程数视为 20 或 5 来处理属性 server.tomcat.max-threads?
限制线程数量的方法是不直接生成它们。
而是使用具有固定线程数上限的线程池。
执行此操作的现代方法是使用ExecutorService
API ( javadoc ) 并使用Executors.newFixedThreadPool(...)
( javadoc ) 或直接使用许多ThreadPoolExecutor
( javadoc ) 构造函数重载之一来实例化服务。
在这种情况下,我们是否将线程数视为 20 或 5 来处理属性 server.tomcat.max-threads?
就该 Tomcat 配置属性而言,在处理请求时由应用程序或应用程序线程池创建的线程不计为“工作线程”。
由应用程序或其线程池来管理它创建的任何线程并确保:
请注意,这种事情很容易变成“拒绝服务”问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.