【问题标题】:Apache + Tomcat with mod_jk - Web site hangs带有 mod_jk 的 Apache + Tomcat - 网站挂起
【发布时间】:2011-05-09 14:07:08
【问题描述】:

我有一个在 Linux redhad 设置上使用 apache 1.3(启用 SSL)+ mod_jk + tomcat 5.5 的网站。就在最近,我的网站开始出现停机问题。每天一次,我的网站挂在端口 80 上。但如果我直接通过 8080 Tomcat 响应访问并且网站工作正常。 80 和 8080 端口都可以访问,但是 apache 和 tomcat 与 mod_jk 的连接中断。只有在我重新启动tomcat后,事情才恢复正常。

我刚刚配置了 apache mod_Jk 来记录错误,所以我会看看在下一次挂起时是否会有任何错误。

apache mod_js 配置:

JkShmSize   1000M

apache 工人配置:

worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=127.0.0.1
worker.worker1.port=8009
worker.worker1.lbfactor=1
worker.worker1.socket_keepalive=1
worker.worker1.recycle_timeout=180
worker.worker1.sticky_session=False

我在 tomcat 上检查了 Web 应用程序错误/警告日志,我有一些“内存不足”的 java 异常。应用程序错误会导致此问题吗?可能是网站过载问题或内存泄漏?目前dev/mapper/VolGroup00-LogVol00 只有 4% 的可用空间。这可能是问题的原因吗?

我也得到了这个日志条目,它与服务器挂起时间相匹配:

/var/log/messages:端口 8009 上可能发生 SYN 泛洪。发送 cookie

更新: 我刚刚又下来了,mod_jk 日志给出了这个:

[Sun Nov 14 00:57:03 2010] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (961): Can't receive the response message from tomcat, network problems or tomcat is$ [Sun Nov 14 00:57:03 2010] [error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat is down or refused connection. No response has been sent to the client (yet) [Sun Nov 14 00:57:08 2010] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (961): Can't receive the response message from tomcat, network problems or tomcat is$ [Sun Nov 14 00:57:08 2010] [error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat is down or refused connection. No response has been sent to the client (yet) [Sun Nov 14 00:57:12 2010] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (961): Can't receive the response message from tomcat, network problems or tomcat is$ [Sun Nov 14 00:57:12 2010] [error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat is down or refused connection. No response has been sent to the client (yet) [Sun Nov 14 00:57:12 2010] [error] ajp_service::jk_ajp_common.c (1758): Error connecting to tomcat. Tomcat is probably not started or is listening on the wrong port. w$ [Sun Nov 14 00:57:12 2010] worker1 mydomain.com 50.999342

看起来我的网站在 8009 端口上已关闭。 AJP 1.3 连接器在 8009 端口上为 apache mod_jk 提供服务。

任何帮助或建议将不胜感激。

谢谢。

【问题讨论】:

  • 你的8009端口是否对外开放?
  • 您能建议如何检查吗?我试图访问mydomain.com:8009。我没有收到任何 http 错误,而只是一个空白页。这是否意味着 8009 对公众开放并且有人泛滥或 DDOS 呢?

标签: java apache tomcat mod-jk ajp


【解决方案1】:

您需要更多数据。

1) 设置server-status handler for apache

2) 设置the status worker of mod_jk。有了这个,你就可以清楚地看到这是否是一个apache到tomcat的通信问题。

3) 当 tomcat 再次挂起时,执行线程转储以查看 Java 处理当前的位置。也许它在等待什么。

编辑:如果是apache到tomcat的问题([2])看看http://community.jboss.org/wiki/OptimalModjk12Configuration

【讨论】:

  • 非常感谢您的回复,只是想检查一下,您能否建议,在生产服务器中启用设置 1 和 2 是否安全?
  • 对第 3 项的评论。 Tomcat没有挂掉,网站还是可以通过8080端口访问的。其他实例也可以访问 apache 80 端口。
  • 你是对的。查看我编辑的答案中的链接。我曾经用这种方式解决了我的问题。
  • 感谢 cherouvim 的链接,我会立即查看。对了,你能给我一些关于第 3 项的提示吗,如何检查 tomcat 的线程转储?
猜你喜欢
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多