Java – Apache + Tomcat with mod_jk – Web site hangs

ajpapachejavamod-jktomcat

I have a website with apache 1.3(SSL enabled) + mod_jk + tomcat 5.5 on Linux redhad setup. Just recently i started having a downtime problem with my web site. Once a day, i get my web site hang on port 80. But if i access directly through 8080 tomcat responses and web site works fine. Both 80 and 8080 ports are accessible but apache and tomcat connection with mod_jk is broken. Only after i restart tomcat, the things get back to normal.

I just configured apache mod_Jk to log the errors, so i will see if there will be any error on the next hang.

apache mod_js conf:

JkShmSize   1000M

apache workers conf:

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

I checked web application error/warn logs on tomcat, i have some "out of memory" java exceptions. Can application errors cause this issue ? Can it be website overload problem or memory leak ? Currently dev/mapper/VolGroup00-LogVol00 has only 4% free space. Can it be a cause for the problem ?

I also got this log entry, it matchs the server hang time:

/var/log/messages: possible SYN flooding on port 8009. Sending cookies

Update:
I just got another down, the mod_jk log gives this:


[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

Looks my website is down on 8009 port. AJP 1.3 connector serves apache mod_jk on 8009 port.

Any help or advice would be highly appreciated.

Thanks.

Best Answer

You need more data.

1) setup the server-status handler for apache

2) setup the status worker of mod_jk. With this you'll then be able to clearly see whether this is a apache to tomcat communication problem.

3) when tomcat hangs again do a thread dump to see where the Java processing is currently at. Maybe it's waiting for something.

Edit: In case it's a problem of apache to tomcat problem ([2]) have a look at http://community.jboss.org/wiki/OptimalModjk12Configuration

Related Topic