我们常说“精细化运营”、“精细化管理”,那什么是“精细化性能剖析”呢?在回答这个问题之前,我们先看看我们这个行业开发人员饱受的困扰:

不清楚应用的运行情况,包括但不限于GC情况、热点代码、热点线程、异常(特别是被吞没的异常);

不清楚应用代码执行情况,甚至不知道某个模块是否还可能会运行,尤其是对于有着一定历史的应用,可能已经有很多开发在上面贡献过代码,但随着业务发展这些功能可能已经不再被使用;

不清楚应用的IO情况,注意,这里说的绝对不仅仅是zabbix上的"磁盘IO",而是具体到某个文件、某个端口、某个线程的IO情况;

这些问题导致的直接后果就是:对于性能优化,无从下手,只能凭经验和直觉去猜测、埋点、优化,当然,最终结果一般就是“加机器扩容”。

了解了我们锁遇到的困扰或者面临的困境之后,我们结合精细化运营和精细化管理的概念来回答什么精细化性能剖析。精细化是基于规范化的基础上建立的一种理念,我们要把目标粒度细致化、精准化、具体化。精细化性能剖析,是基于某种规范详细的分析应用的性能,能够量化性能指标,明确出问题的瓶颈。

值得高兴的是JDK7以上已经内置了一款新型的性能剖析工具,也就是今天要重点介绍的-Java Flight Recorder,简称JFR,可以类比为飞机上的黑匣子。

阅读剩下更多

默认配图