JVM 性能问题定位与分析

性能调优是一个比较大的开放性话题。在现实中,如果

发现系统有性能问题或者性能无法达到我们的预期,我们

通常需要先分析和定位系统的性能瓶颈。分析定位性能瓶

颈主要有如下的方法:

■分析日志

当出现性能问题时,查看分析相关日志是定位性能瓶颈

比较有效且直接的手段。

■分析服务器负载情况

通过工具或其它手段来分析CPU、内存、 I/O等负载情况,

用于定位性能瓶颈。

后续,将以Java应用系统为例,和大家分享下通过分析

日志和服务器负载情况来定位性能瓶颈的方法。

JVM垃圾收集日志是定位性能瓶颈的重要信息来源之一。后面我们将以JVM垃圾收集日志为例,看如 何配置和分析该日志来定位性能瓶颈。

对于java应用程序,需要做到如下两点:

■生成JVM垃圾收集日志

■垃圾收集日志应独立于其它应用日志,单独保存。

对于生产系统来说更应如此。生成垃圾收集日志本身没有明显的开销,所以对于Java进程来说,它应 始终开启。


JVM关于GC日志收集的参数见下页

参数

作用

-Xloggc:gc.log

指定垃圾收集日志文件的目录及文件名

-XX:+PrintGCDetails

将垃圾收集时间的详细信息写入日志文件

-XX:+PrintTenuringDistribution

将垃圾收集时间的额外信息写入日志文件,对分析 工具有用

-XX:+PrintGCTimeStamps

日志中打印垃圾收集事件的时间(其单位是jvm 启动后的秒数)

-XX:+PrintGCDateStamps

日志中打印垃圾收集事件的机器时间

-XX:+UseGCLogFileRotation

打开日志文件滚动功能

-XX:+NumberOfGCLogFiles=

设置日志滚动文件的个数

-XX:+GCLogFileSize=

设置日志文件的最大值,当文件大小超过该值时, 日志将写入下一个文件中

[GC (Allocation Failure) [PSYoungGen: 53248K->2176K(59392K)] 58161K->7161K(256000K), 0.0039189 secs] [Times: user=0.02 sys=0.01, real=0.00 secs]

上述是比较简单的垃圾收集日志的格式。但是通常随着JVM垃圾收集相关参数的添加,输出的日志

会逐渐复杂。所以在平时的日志分析中,建议采用分析工具来解析垃圾收集日志。

一般日志可以使用 GCViewer这两个工具如何来解析垃圾收集日志。


JVM 性能问题定位与分析



其他的工具VisualVM、GCeasy 工具比较类似。


其他的在线性能分析工具:


Jprofiler是一个商用工具软件。如果要监控的JVM进程部署在Linux机器上,一般需下载Jprofiler For Linux (用于服务端) 、Jprofiler For Windows (用于客户端) ,并确保两边的版本一致。

Jprofiler性能分析方式主要有:

■远程集成

■远程服务

■离线分析

■本地服务


基于Jprofiler可以进行快照,对比方法执行时间和SQL执行时间。

性能   问题   JVM
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章