当tomcat失败时,apache会挂起

我有Tomcat的前面的Apache,使用mod_rewritemod_proxy中继请求,同时直接提供静态内容。

Tomcat服务器可能会陷入停顿并停止响应,或者只是简单的崩溃。 我的问题是,在这种情况下,它需要与Apache的httpd下来。 甚至在我把Tomcat设置成直线后,它也不会回来。

发生这种情况时,再次运行apache的唯一方法是发出一个停止命令,然后kill -9剩余的apache进程,最近我还必须运行ipcrm来删除信号量,否则我得到一个“设备上没有剩余空间”错误。

我的猜测是,所有的Apache的工人都成为代理线程,等待超时,而没有其他任何服务。

我不想更改ProxyTimeout ,因为在正常的操作过程中,一些请求确实需要很长时间。 但是我想告诉apache停止所有正在等待的代理请求,并重新开始。

有这样的事情,还是有另一种方法,我应该这样做?

我使用的是Ubuntu 8.04。

你可以尝试使用mod_jk而不是mod_proxy。 mod_jk允许你configuration到tomcat的最大连接数。 在您的workers.properties文件中使用:

 worker.worker_name.connection_pool_size = 10 

您使用的值应该低于Apacheconfiguration中的最大连接数。 有希望的是,一旦这个连接数量等待tomcat,更多的请求将返回一个500错误,但你仍然有线程服务于其他请求。

有一个说明,如果你使用的是prefork MPM,那么你不应该把这个值设置为高于1,所以这只有在你使用线程化MPM的时候才能工作。