gpt4 book ai didi

apache - mod_jk 失去与 tomcat 的连接

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

我在过去几天刚刚启动的当前生产服务器出现问题。我正在运行 apache httpd-2.2.3 和 tomcat-5.5.20,与 mod_jk v1.3 连接,并在 tomcat 上托管了一个 Spring MVC 站点。正在发生的事情是,在启动大约 12 小时后,网站对我们的用户挂起。当这第一次发生时,我可以在 catalina.out 中看到以下几个错误

WARN [org.apache.jk.core.MsgContext] Error sending end packet
java.net.SocketException: Broken pipe

在查看之后,我开始明白这意味着用户在请求完成之前取消了请求,因此返回路径已关闭,因此数据无法返回。从网上搜索看来,这可能会导致线程在 tomcat 中保持打开状态,直到达到超时为止。这似乎是有道理的,因为当 tomcat 摔倒时我到达了 catalina.out 日志的末尾

All threads (200) are currently busy, waiting. Increase maxThreads (200) or check the servlet status

建议对 apache httpd.conf 中的 JkModule 设置进行以下更改

JkOptions +DisableReuse

我在确保它不会对我们的网站造成副作用后才这样做,并且第二天运行良好,但昨天出现了相同的症状,网站已卡住。然而这一次在 catalina.out 中完全没有错误,我们只是停止向 tomcat 发送请求。我从应用程序日志中可以看到它在 17:31 收到了最后一个请求,然后在 mod_jk.log 中我可以看到以下内容

[Thu Sep 06 17:37:07 2012] [18784:53792] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (947): (worker1) can't receive the response message from tomcat, network problems or tomcat is down (127.0.0.1:8009), err=-104
[Thu Sep 06 17:37:07 2012] [18784:53792] [error] ajp_get_reply::jk_ajp_common.c (1536): (worker1) Tomcat is down or refused connection. No response has been sent to the client (yet)

然后在我的 httpd error_log 中

[Thu Sep 06 17:38:39 2012] [error] server reached MaxClients setting, consider raising the MaxClients setting

所以在我收到任何错误之前是 6 分钟,然后是最大客户端错误之前的 1 分 30 秒。重新启动 tomcat 也解决了这个特定问题。

除了我提到的配置(下面的当前配置)之外,我们的 apache、tomcat 或连接器配置没有任何变化,但我们已经对我们的站点进行了更改,以便为每个用户执行更多的 Ajax 请求。因此,我想了解的是,我如何最好地分析我们的系统,以了解我可以进行哪些正确的设置更改,以确保我不会使我们的服务器过载,但确实可以阻止此问题的发生。

谢谢伊恩

当前配置

httpd.conf

Timeout 300
KeepAlive on
MaxKeepAliveRequests 100
KeepAliveTimeout 15

LoadModule jk_module modules/mod_jk.so
JkLogLevel error
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories +DisableReuse

workers.properties

# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.recycle_timeout=300

httpd-mpm.conf

StartServers          5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0

Tomcat设置就是标准的tomcat设置

最佳答案

原来答案是改变保活超时。为了阻止这种情况发生,我需要做的就是将 KeepAliveTimeout 从 15 更改为 2,并将 MaxRequestsPerChild 添加为 5000。我发现这可以阻止此问题再次发生

关于apache - mod_jk 失去与 tomcat 的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310601/

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