2014-02-08 65 views
1

星期五下午晚點,我的Web應用程序停止響應請求。服務器仍然可以訪問,並且Apache Tomcat進程沒有運行 - 日誌中沒有錯誤。你想回家,但你不能修復。你是做什麼?我重新啓動服務器Tomcat Linux服務器失敗問題

服務器管理員告訴我,它的「在進一步的調查,它來到我們的理解是,Tomcat應用程序是無法處理進入的服務器請求大量後

網站將運行您網站的高峯營業時間或網站流量高時,這就是Tomcat服務被掛斷或崩潰的原因,只有解決方案是重新啓動它,以便Tomcat服務正常運行。尺寸問題「

但我的網站每天最多隻能生成250人。

請問我該怎麼辦。

+2

即使1人可能會崩潰,則取決於其後面的代碼。但奇怪的是,日誌文件中沒有任何內容,我覺得很難相信。 –

+0

誰上傳? –

回答

0

你需要加載測試你的代碼,由於提供的信息有限,從這個端口的任何人給出的回答,即從stackoverflow將是非常有限的。

它是否啓用了jmx? 如果是這樣,然後通過jconsole連接到您的tomcat服務器,並觀察發生了什麼,這聽起來對我來說是堆轉儲,可能是內存限制,然後崩潰。

您可以通過添加這樣的事情你setenv.sh

-verbose啓動:GC -Xloggc:/var/log/tomcatXX/gc.log -XX:+ PrintGCDetails -XX:+ PrintGCDateStamps

http://freddyandersen.wordpress.com/2009/07/14/how-to-enable-verbose-gc-in-tomcat/

然後,您可以查看gc日誌,查看gc的執行頻率,以及確實存在當前配置問題。

問題是你可以對它進行不同的配置,並且由於代碼中的內存泄漏而仍然面臨崩潰。這就是爲什麼通過jconsole加載測試和監視jvm非常重要的原因 - 通常在完整的gc之後,如果內存使用量不斷上升和下降,直到每個完整gc後可用的內存更少,則內存使用率應該降低到默認的可用級別確保代碼中存在內存泄漏。

看看你的tomcat進程的Xms和XMx設置,如果這是低的嘗試增加這通常這是你的應用程序(tomcat)的整體內存配置,這是當它達到其容量與內存泄漏它會崩潰。

如果Xmx和Xms被設置爲512M,那麼肯定會嘗試加倍,如果更好,並且擁有更多內存,則可以使用2gigs等。

因此增加這將增加它的運行時間,但這也限於硬件的實際可用內存。

增加Xmx和Xms內存配置意味着它在達到完整GC之前有多少內存。假設你的解決方案是高可用性,並且你有強壯的盒子,你可以有堆棧A和可以說40Gigs xmx xms設置,經過負載測試和測試期望的流量將= 14小時的實際應用,沒有完整的gc之後,它將會充滿GC - 這將得到14,小時的不間斷應用程序的使用 - 之後,您將無法協議棧b,讓棧中做一個完整的GC

更多的內存定義= GC將採取實際發生的時間越長=
長由於更高的內存配置= GC更多的實際停機時間。

一個例子:

它就像一個大的跳躍 - 小跳一定會花費更少的時間用手工比一個更大的跳躍來填補或空。所以更大的內存配置=更多的時間與更小的gc和更長的時間獲得完整的gc,但是當它達到完全gc時,需要更長的時間來清空應用程序不響應請求。

正確的解決方案是運行多個tomcat服務器以及待機或循環輪詢並讓它們共享流量 - 這是如果您有apache前端,或者如果不是配置爲負載平衡和標記節點等的F5等。

這應該給你一些想法,如何尋找並期待在修改,每天