[英]Tomcat Linux server failed issue
星期五下午很晚,我的Web應用程序已停止響應請求。 服務器仍然可以訪問,並且Apache Tomcat進程未運行-日志中沒有錯誤。 您想回家,但要等它解決后再說。 你是做什么?
重新啟動服務器后,站點將運行
服務器管理員告訴我,“經過進一步調查,我們了解到Tomcat應用程序無法在您網站的高峰時段或網站流量很高的情況下處理大量進入服務器的請求。這是Tomcat服務掛起或崩潰的原因,唯一的解決辦法是重新啟動它,以便Tomcat服務運行。
但是我的網站每天最多只能產生250個人。
請建議我該怎么辦。
您需要對您的代碼進行負載測試,由於所提供的信息有限,因此從此端任何人(即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,請嘗試將其加倍,如果更好,並且具有更多的內存,則可以選擇2gig等。
因此增加它會增加其運行時間,但這也僅限於硬件的實際可用內存。
增加Xmx和Xms內存配置意味着它在達到完整GC之前有多少內存。 假設您的解決方案是高可用性,並且您擁有強大的包裝盒,那么您可以擁有40Gigs xmx xms設置的堆棧A,在進行負載測試和針對預期流量進行測試之后,這將= 14小時的實際應用程序沒有完整的gc,之后它將滿載gc-這將提供14個小時的不間斷應用程序使用-之后,您將無法堆疊b並讓堆疊a執行完整的gc
定義的內存越多= gc實際發生的時間越長=
gc的時間越長,這歸因於內存配置越高= GC時實際的停機時間越長。
一個例子:
它就像一個大的跳躍-較小的跳躍肯定會比較大的跳躍花費更少的時間進行手動填充或排空。 因此,較大的內存配置=使用較小的gc會花費更多的時間,而到達完整的gc則需要更長的時間,但是當達到完整的gc時,在應用程序不響應請求的過程中,將需要更長的時間來清空。
正確的解決方案是運行多個tomcat服務器,並使其處於待機狀態或循環運行,並讓它們共享流量-這是如果您具有apache前端,或者是否不是諸如F5之類的配置來負載平衡並標記節點故障等。
這應該給您一些關於尋找和修改的想法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.