Bry*_*son 7 java tomcat servlets
我有多个 Web 应用程序在单个 Tomcat 容器下运行。由于它们都在单个 Tomcat 连接器(如 server.xml 文件中定义)下运行,因此 maxConnections 和 maxThreads 等属性将容器作为一个整体进行管理。因此,单个应用程序可能会消耗所有可用的 Tomcat 线程,从而使其他线程应用程序处于饥饿状态并使其无响应。我希望能够在每个上下文的基础上定义最大的 http 线程,这样就不再可能了。
这是我迄今为止尝试过的:
有没有其他人遇到过这样的事情?我觉得应该有一个“支持 Tomcat”的工作流程来完成我所追求的工作。
我将发布 Tomcat 用户组提供给我的答案:http://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Semaphore_Valve(信号量阀不是 Tomcat 9具体,但实际上是在 Tomcat 6 中引入的)。我尝试了这个概念,发现了以下实际应用:
[tomcat-home]/conf/Catalina/localhost,阀门嵌套在 Context 元素中。这不一定是我要采用的解决方案,因为需要执行更多测试。然而,我想我应该添加这个,因为它是问题的潜在答案。
更新:
回顾一下,SemaphoreValve 是通过 Tomcat 用户邮件列表向我推荐的一个选项,作为我上面描述的问题的解决方案。事实证明它比我预期的更容易实施。将以下内容添加到 Tomcat/conf 目录中的 context.xml 中即可达到目的:
<Valve className="org.apache.catalina.valves.SemaphoreValve"
concurrency="10"
fairness="true" />
Run Code Online (Sandbox Code Playgroud)
感谢 Apache 小组的 Mark Thomas 提供了解决方案。
| 归档时间: |
|
| 查看次数: |
2151 次 |
| 最近记录: |