我对jvm的经验主要是为几个应用程序维护一个tomcat容器。 我发现自己总是不确定-Xms -Xmx -Xmn -XX:PermSize -XX:MaxPermSize设置与我初始化我的tomcat实例的比率。
我知道这将取决于我正在运行的应用程序的数量和大小。 我并不想要我的手,但任何人都有关于如何testing您的负载需求的技巧或资源,以及设置的好比率是什么?
提前致谢。
更新:
在这种情况下,这个盒子是一个slicehost vps:
64位Linux 1024 Ram和1.6 jdk Sun(尽pipe我可能会改变这一点)
Tomcat通过mod_jk位于Apache后面。 我也运行一个MySQL和一个邮件服务器(都使用不足)。
在tomcat上,我只运行一个jruby和两个railo(cfml)应用程序,并且应该稍后添加。
我正在寻找更多的技巧/指针,而不是一个确切的设置规范。 因为几乎所有事情都可能发生变化。
您需要提供更多信息:
1)盒子上有多less内存? Tomcat是唯一运行的吗?
2)这是一个32位或64位的虚拟机?
3)这个盒子上有多less个CPU /内核?
4)你运行的是什么主要版本的jdk? 1.4,5或6?
这些问题的答案将允许您为堆设置边界。
一旦你通过了,有关应用程序的问题可能需要回答 – 有多less对象是长期存在的(例如caching),有多less是短命的(less于5秒)。
这些问题会告诉我们,伊甸园可以使用多less百分比的堆,以及需要多less百分比用于老一代。
更新
那么,如果你的Tomcat长期运行,那么添加'-server'标志可能是有益的。 鉴于你的限制,除非你知道你的应用程序内外,最好留给人体工程学来确定最佳的比例和收集器。 Java调优更像是一门艺术,而不是一门科学。 从这里开始: http : //java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html ,然后查找像GCHisto和VisualGC这样的工具来帮助您可视化虚拟机内部发生的事情。