我遇到了一個問題,這個服務器在過去幾天剛剛啓動。 我正在運行apache httpd-2.2.3和tomcat-5.5.20,與mod_jk v1.3相關,並且在tomcat上有一個Spring MVC站點。 正在發生的事情是,約12小時後,網站掛起爲我們的用戶。當這發生了第一次我可以看到以下幾個錯誤的catalina.out的mod_jk失去與tomcat的連接
WARN [org.apache.jk.core.MsgContext] Error sending end packet
java.net.SocketException: Broken pipe
看這件事後,我才明白,這意味着用戶已經取消的請求已經完成之前,這樣的回報路徑被關閉,因此數據無法返回。從搜索網頁看來,這可能會導致線程在tomcat中保持打開狀態,直到它超時。這似乎是有道理的,因爲我在catalina.out的日誌的時候買的時候tomcat的下跌逾
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分鐘。重新啓動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的設置
您是否考慮升級到Tomcat 6/7? –
我沒有設置技術堆棧,我希望不必升級。如果涉及到它,那麼可能是一些嘗試,但我有一種感覺,這可以通過正確的配置修復 – sparkdoo