Java的性能调校 « Tonny Xu
...Life is like a box of chocolates,
you never know what you’re gonna get...

以前做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性能调校的课题。

首先找到了一片比较浅显的文档:

其中提到了性能调校的几个要点:

  • 在所有对JVM的调校进行之前,先做以下的检查:
    1. 是否使用了最新的Java Release?
    2. Java是否更新到了最新的update?
    3. OS的补丁是否已经更新到最新?
    4. OS中是否还跑着其他许多不需要的应用程序?
  • 其次对JVM进行以下的调校:
    1. 是否使用了Server HotSpot?
    2. 有没有使用并行GC?(ParallelGC)
    3. 初始化堆内存(heap size)大小是多少?推荐使用物理内存的1/64
    4. 最大堆内存(heap size)是多少?推荐使用物理内存的1/4
  • 调校之前一定要准确的收集系统的运行情况数据并进行分析
    1. 可以参考使用JVM的管理与监视相关文档

在这样的指导下。我准备对我的系统做以下的操作步骤:

  • 使用JConsole观察Tomcat中JVM的使用情况,并进行分析
  • 使用jvmstat观察并进行分析
  • 在Tomcat的运行参数中添加 -Xprof 参数,进行Profiling

在Java tuning white paper中直接提到了一些GC调整的方式,在使用了ParallelGC以后,系统的运行确实能提高不少,但是具体的仍然有问题,等我的Monitoring和Profiling结束以后再报告。

Share and Enjoy:
  • Print
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • FriendFeed
  • QQ书签
  • StumbleUpon
  • Technorati
  • 豆瓣

Comments
are closed.