gpt4 book ai didi

带有 mod_jk : maxThread setting upon load balancing 的 Apache + Tomcat

转载 作者:行者123 更新时间:2023-11-28 21:47:10 26 4
gpt4 key购买 nike

我在 2 台服务器上安装了带有 mod_jk 的 Apache + Tomcat。每台服务器都有自己的 Apache+Tomcat 对,每个请求都由 2 台服务器上的 Tomcat 负载平衡 worker 提供服务。

我有一个关于 Apache 的 maxClient 和 Tomcat 的 maxThread 应该如何设置的问题。

默认数字是,Apache:maxClient=150,Tomcat:maxThread=200

在此配置中,如果我们只有 1 个服务器设置,它会工作得很好,因为 Tomcat worker 永远不会同时接收超过 150 个传入连接。但是,如果我们在 2 个服务器之间进行负载平衡,Tomcat worker 是否有可能接收到 150 +(来自另一台服务器的一些数字)并使 maxThread 溢出为 SEVERE:所有线程 (200) 当前正忙?

如果是这样,我应该在这种情况下设置 Tomcat 的 maxThread=300 吗?

谢谢

最佳答案

将 maxThreads 设置为 300 应该没问题 - 没有固定的规则。这取决于您是否看到任何连接被拒绝。

增加太多会导致高内存消耗,但已知生产 Tomcat 以 750 个线程运行。也请看这里。 http://java-monitor.com/forum/showthread.php?t=235

你真的遇到了SEVERE错误吗?我已经在我们的 Tomcat 6.0.20 上进行了测试,当超过 maxThreads 时它会抛出一条 INFO 消息。

INFO: Maximum number of threads (200) created for connector with address null and port 8080

它不会拒绝连接,直到超过 acceptCount 值。默认值为 100。

来自 Tomcat 文档 http://tomcat.apache.org/tomcat-5.5-doc/config/http.html

The maximum queue length for incoming connection requests when all possible request processing threads are in use. Any requests received when the queue is full will be refused. The default value is 100.

它的工作方式是

1) 随着并发请求数量的增加,线程将被创建到配置的最大值(maxThreads 属性的值)。

因此,在您的情况下,此时将出现消息“创建的最大线程数 (200)”。然而,请求仍将排队等待服务。

2) 如果同时接收到更多请求,则将它们排队到配置的最大值(acceptCount 属性的值)。

因此总共可以接受 300 个请求而不会失败。 (假设您的 acceptCount 默认为 100)

3) 超过这个数字会抛出连接被拒绝的错误,直到有可用的资源来处理它们。

所以在你达到第 3 步之前你应该没问题

关于带有 mod_jk : maxThread setting upon load balancing 的 Apache + Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com