我們使用Apache和JBOSS來託管我們的應用程序,但是我們發現了一些與線程處理mod_jk有關的問題。Apache與JBOSS使用AJP(mod_jk)給線程數產生尖峯
我們的網站屬於低流量網站,在我們網站的高峯活動期間擁有最多200-300位併發用戶。隨着流量的增長(不是以併發用戶爲單位,而是以服務器的累積請求爲單位),服務器停止提供很長時間的請求,雖然它沒有崩潰,但直到20分鐘才能提供請求。 JBOSS服務器控制檯顯示350個線程在兩臺服務器上都很忙,儘管有足夠的空閒內存,比如1-1.5 GB(JBOSS使用2臺服務器,64位,爲JBOSS分配4 GB RAM)
爲了檢查我們使用JBOSS和Apache Web控制檯的問題,我們發現線程在S狀態下顯示的時間長達數分鐘,儘管我們的頁面大約需要4-5秒才能提供服務。
我們採取了線程轉儲,發現線程主要處於WAITING狀態,這意味着它們無限期地等待着。這些線程不是我們的應用程序類,而是AJP 8009端口。
有人可以幫助我,因爲別人也可能得到這個問題,並以某種方式解決它。如果需要更多信息,請告訴我。
也是mod_proxy比使用mod_jk更好,或者mod_proxy還有一些其他問題,如果我切換到mod_proxy可能會致命嗎?是
我使用的版本如下:
Apache 2.0.52
JBOSS: 4.2.2
MOD_JK: 1.2.20
JDK: 1.6
Operating System: RHEL 4
感謝您的幫助。
夥計們!我們終於找到了上述配置的解決方法。這是APR的使用,這裏提到:http://community.jboss.org/thread/153737。其問題正如許多人在下面的答案中正確提到的那樣,即連接器問題。此前我們通過配置hibernate和增加響應時間來做臨時解決方案。完整的修復是APR。