为JBoss指定最佳的最小和最大堆大小

时间:2011-04-27 14:09:30

标签: java jboss production

我有一个Web应用程序,我想在Linux机器上进行生产。该机器将在JBoss 4.2.3上运行,在它前面将是最新版本的Apache Web Server(使用mod_jk)。这是驻留在机器上的唯一两个应用程序。服务器有1.7GB RAM。我将非常感谢有关如何在此生产环境中找到JBoss的最佳最小(-Xms)和最大(-Xmx)堆大小的一些信息或参考。

此致

3 个答案:

答案 0 :(得分:3)

找到最佳堆大小的好方法是使用VisualVM(http://hillert.blogspot.com/2010/01/remote-profiling-of-jboss-using.html)并加载测试。这允许您可视化负载下的堆使用情况以及垃圾收集发生的时间和频率。选择一些像这些gents建议的数字(在你的情况下介于700mb和1024mb之间)将你的实例置于负载下并观察内存配置文件。我怀疑你会发现1.7GB不足以满足大多数生产应用的需求。这通常表现为来自许多gc颠簸,不良响应时间和/或outofmemoryerrors的尖锐cpu图表线。关键是你在测试之前不会确定。

答案 1 :(得分:1)

那么,这通常取决于每个应用程序以及操作系统的负载,但我将最大堆大小设置为1024或1280.只需看看OS和Apache正在使用多少+一些缓冲区用于尖峰

答案 2 :(得分:1)

每个应用程序都会有不同的要求,因此很难为您的情况提供最佳答案。但一般情况下,我发现当服务器只运行Apache和Java时,为JVM堆分配60%的服务器内存效果很好。

所以我建议您为服务器-Xms1g -Xmx1g。这应该为操作系统开销,超出堆的Apache和Java内存留下足够的空间(即永久生成和堆栈大小乘以线程数)。您应该试验并分析您的应用程序,以验证它是否稳定。