性能调优是一个比较大的开放性话题。在现实中,如果
发现系统有性能问题或者性能无法达到我们的预期,我们
通常需要先分析和定位系统的性能瓶颈。分析定位性能瓶
颈主要有如下的方法:
■分析日志
当出现性能问题时,查看分析相关日志是定位性能瓶颈
比较有效且直接的手段。
■分析服务器负载情况
通过工具或其它手段来分析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这两个工具如何来解析垃圾收集日志。
其他的工具VisualVM、GCeasy 工具比较类似。
其他的在线性能分析工具:
Jprofiler是一个商用工具软件。如果要监控的JVM进程部署在Linux机器上,一般需下载Jprofiler For Linux (用于服务端) 、Jprofiler For Windows (用于客户端) ,并确保两边的版本一致。
Jprofiler性能分析方式主要有:
■远程集成
■远程服务
■离线分析
■本地服务
基于Jprofiler可以进行快照,对比方法执行时间和SQL执行时间。
留言与评论(共有 0 条评论) “” |