Apache-2.2
當tomcat失敗時apache掛起
我在 Tomcat 前面有 apache,在直接提供靜態內容的同時使用
mod_rewrite
和mod_proxy
中繼請求。Tomcat 伺服器可能會陷入困境並停止響應,或者只是簡單地崩潰。我的問題是,在這些情況下,它會使用 apache httpd。即使我設置了Tomcat,它也不會恢復。
發生這種情況時,讓 apache 再次工作的唯一方法是發出停止命令,然後發出
kill -9
剩餘的 apache 程序,最近我還必須執行ipcrm
以刪除信號量,否則我會收到“設備上沒有剩餘空間”錯誤。我的猜測是,所有 apache 的工作人員都成為代理執行緒,等待超時,而沒有其他服務。
我不想更改
ProxyTimeout
,因為在正常操作期間,某些請求確實需要很長時間。但是我想要一種方法來告訴 apache 停止它現在擁有的所有等待代理請求並重新開始。有這樣的事情,還是有其他方法我應該解決這個問題?
我正在使用 ubuntu 8.04。
您可以嘗試使用 mod_jk 而不是 mod_proxy。mod_jk 允許您配置與 tomcat 的最大連接數。在您的workers.properties 文件中使用:
worker.worker_name.connection_pool_size = 10
您使用的值應低於 Apache 配置中的最大連接數。希望應該發生的是,一旦該數量的連接正在等待 tomcat,任何更多的請求都將返回 500 錯誤,但您仍然有執行緒可以服務其他請求。
有一條註釋說,如果您使用的是 prefork MPM,那麼您不應該將此值設置為大於 1,因此這僅在您使用執行緒 MPM 時才有效。