以前做Java的项目,基本上不会遇到对性能进行调校的事情,但是最近遇到了一个比较严重的问题。具体情况不便详细说,但是大致情况如下:
- Server: Intel Xeon Duo 2 *2
- Memory: 4G
- Disk: 3500G
- JDK: 1.5.0_02
- Web Server: Tomcat 5.5.19
- Application: Some kind of OpenSource Project A which contains about 27M's package.
在Tomcat中配置了虚拟主机,运行了4份A的独立版本。运行起来以后,内存占用3G左右,在安装第5份的时候出现OutOfMemory的异常,由此引发了JVM性能调校的课题。
首先找到了一片比较浅显的文档:
- Java Tuning White Paper, Sun Microsystems, [live].
其中提到了性能调校的几个要点:
- 在所有对JVM的调校进行之前,先做以下的检查:
- 是否使用了最新的Java Release?
- Java是否更新到了最新的update?
- OS的补丁是否已经更新到最新?
- OS中是否还跑着其他许多不需要的应用程序?
- 其次对JVM进行以下的调校:
- 是否使用了Server HotSpot?
- 有没有使用并行GC?(ParallelGC)
- 初始化堆内存(heap size)大小是多少?推荐使用物理内存的1/64
- 最大堆内存(heap size)是多少?推荐使用物理内存的1/4
- 调校之前一定要准确的收集系统的运行情况数据并进行分析
- 可以参考使用JVM的管理与监视相关文档
在这样的指导下。我准备对我的系统做以下的操作步骤:
在Java tuning white paper中直接提到了一些GC调整的方式,在使用了ParallelGC以后,系统的运行确实能提高不少,但是具体的仍然有问题,等我的Monitoring和Profiling结束以后再报告。
No comments:
Post a Comment