我有一個Web應用程序,我想要在Linux機器上進行生產部署。該機器將在JBoss 4.2.3上運行,並且它將成爲最新版本的Apache Web Server(使用mod_jk)。這是機器上僅有的兩個應用程序。該服務器擁有1.7GB RAM。如果能夠在此生產環境中找到JBoss的最佳最小(-Xms)和最大(-Xmx)堆大小,我將不勝感激。爲JBoss指定最佳的最小和最大堆大小
問候
我有一個Web應用程序,我想要在Linux機器上進行生產部署。該機器將在JBoss 4.2.3上運行,並且它將成爲最新版本的Apache Web Server(使用mod_jk)。這是機器上僅有的兩個應用程序。該服務器擁有1.7GB RAM。如果能夠在此生產環境中找到JBoss的最佳最小(-Xms)和最大(-Xmx)堆大小,我將不勝感激。爲JBoss指定最佳的最小和最大堆大小
問候
找到最佳堆大小的好方法是使用VisualVM(http://hillert.blogspot.com/2010/01/remote-profiling-of-jboss-using.html)和加載測試。這使您可以查看負載下的堆使用情況,以及垃圾回收發生的時間和頻率。選擇一個像這些男士所建議的數字(在你的情況下介於700mb和1024mb之間),將你的實例加載並觀察內存配置文件。我懷疑你會發現1.7GB對於大多數生產應用來說是不夠的。這通常表現爲由許多gc抖動,響應時間差和/或超出內存的錯誤造成的尖峯cpu圖表行。關鍵是,除非你測試,否則你肯定不會知道。
嗯,這通常取決於每個應用的負載,以及操作系統,但我最大堆大小設置爲1024或1280。只是有多少操作系統和Apache是看看使用+一些緩衝區的尖峯。
每個應用程序都有不同的要求,因此很難爲您的情況提供最佳答案。然而,通常我發現當服務器僅運行Apache和Java時,將60%的服務器內存分配給JVM堆可以很好地工作。
所以我建議你的服務器使用-Xms1g -Xmx1g
。這應該爲操作系統開銷,超出堆的Apache和Java內存(即永久生成和堆棧大小乘以線程數量)留出足夠的空間。您應該試驗並分析您的應用程序以驗證其穩定性。