jvm 性能调优技巧/资源?

jvm 性能调优技巧/资源?

我对 jvm 的经验主要是为多个应用程序维护一个 tomcat 容器。我发现自己总是不确定初始化 tomcat 实例时 -Xms -Xmx -Xmn -XX:PermSize -XX:MaxPermSize 设置的比例是多少。

我知道这会因我运行的应用程序的数量和大小而异。我并不想亲自操作,但有人有关于如何测试负载需求以及最佳设置比例的提示或资源吗?

提前致谢。

更新:

在这种情况下,该盒子是一个slicehost vps:

64 位 Linux 1024 Ram 和 1.6 jdk Sun(尽管我可能会改变它)

Tomcat 通过 mod_jk 位于 Apache 后面。我还运行一个 mysql 和一个邮件服务器(两者的使用率都较低)。

在 tomcat 上我只运行一个 jruby 和两个 railo (cfml) 应用程序,稍后还会添加更多。

我更多的是在寻找提示/指针,而不是精确的设置规范,因为几乎所有内容都可能发生变化。

答案1

您需要提供更多信息:

1) 机器上有多少 RAM?只有 Tomcat 在运行吗?
2) 这是 32 位还是 64 位 VM?
3) 这个机器上有多少个 CPU/核心?
4) 您运行的 jdk 的主要版本是什么?1.4、5 还是 6?

这些问题的答案将允许您为堆设置边界。

一旦你解决了这个问题,可能需要回答有关应用程序的问题——有多少对象是长寿命的(即缓存),有多少对象是短暂的(超出范围之前少于 5 秒)。

这些问题将告诉我们堆的百分之多少可以用于伊甸园,以及百分之多少需要用于老一代。

更新

好吧,如果您的 Tomcat 运行时间很长,那么添加“-server”标志可能会有所帮助。考虑到您的限制,除非您对应用程序了如指掌,否则最好还是依靠人体工程学来确定最佳比率和收集器。Java 调优更像是一门艺术,而不是一门科学。从这里开始:http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html,然后寻找像 GCHisto 和 VisualGC 这样的工具来帮助您直观地了解虚拟机内部发生的情况。

相关内容