性能问题排查使用JPorfiler

起因

生产环境的程序,在使用过程中,客户提到了性能问题,处理比较慢。我在本来想通过日志,和代码逻辑来判断为什么慢,结果因为日志较少,并没有定位出哪里导致的性能问题,所以使用了JPorfiler监控,特地记录下排查过程。

服务器安装JPorfiler

下载好对应的 linux 版本 jprofiler(我用的是jprofiler_linux_10_1_5.tar.gz),并解压,如图所示开放监听端口。
性能问题排查使用JPorfiler_第1张图片

本地安装JPorfiler

下载和服务器版本一致的windows版本的jprofiler,安装启动,连接方式如下
性能问题排查使用JPorfiler_第2张图片

排查记录

性能问题排查使用JPorfiler_第3张图片
可以看到,sql语句运行,第一个sql,花费了820秒。我看了下sql语句,一下子就知道哪里慢了。sql语句就不贴出来了,简单描述下就是那个地方用到了批量插入,公司使用的数据库是oracle,oracle的批量插入,直接导致了硬解析问题,导致性能低下,大家可以自行去了解下sql的硬解析问题,有时候批量插入不一定比for循环插入快。

警告

最后提醒下,千万别用JPorfiler直接连接生产程序,我直接连的是生产,导致生产程序奔溃了半小时,血的教训,尽量用测试环境复现问题,之后用JPorfiler连接测试环境测试。

你可能感兴趣的:(java)