使用Jprofiler+jmeter进行JVM性能调优
一、JProfiler简介
JProfiler 是一个商业授权的Java剖析工具,由EJ技术有限公司,针对的Java EE和Java SE应用程序开发的。它把CPU、执行绪和内存的剖析组合在一个强大的应用中。JProfiler可提供许多IDE整合和应用服务器整合用途。JProfiler的是一个独立的应用程序,但其提供Eclipse和IntelliJ等IDE的插件。它允许两个内存剖面评估内存使用情况和动态分配泄漏和CPU剖析,以评估线程冲突。JProfiler直觉式的GUI让你可以找到性能瓶颈、抓出内存漏失(memory leaks)、并解决执行绪的问题。它让你得以对heap walker作资源回收器的root analysis,可以轻易找出内存漏失;heap快照(snapshot)模式让未被参照(reference)的对象、稍微被参照的对象、或在终结(finalization)队列的对象都会被移除;整合精灵以便剖析浏览器的Java外挂功能。
二、JMeter简介
三、IDEA安装JProfiler插件
点击install安装该插件,安装完成后需要重启IDEA,左边插件是通过jprofiler启动tomat,并同时启动jprofiler监测。右边工具是将jprofiler直接绑定到一个活动的JVM中,即时进行监测。在通过profiler启动tomcat的过程中,会出现如图所示需要选择的界面,按照需求选择,我这里是进行java class的jvm性能测试,所以在Initial recording profile中选择 CPU recording ,其他按照默认配置即可。
当然你也可以进行filter过滤设置、jdbc监测设置等。
选择完成后,profiler即进行JVM监控操作,这里可以大致的看到内存、GC垃圾回收、Class、线程、以及CPU加载情况的监控。
现在我们重点监控CPU加载情况监控。选中左边CPU views ,点击Attach可以修改关联项。
点击jmeter.bat,启动jmeter。创建线程组,右键线程组,添加-->配置元件-->HTTP信息头管理器+HTTP请求 添加-->断言-->响应断言 添加-->监听器-->查看结果树+聚合报告,你也可以按照你的测试要求添加其他需要的组件,我这里是对rest的接口进行测试,所以这些已经可以满足要求。Http消息头设置 contentType设置为需要的json格式 application/json。在http请求中填写你的需要测试的服务IP/端口/接口访问路径/请求方式/请求协议等信息。数据如果是post方式提交,请求的参数填写至Body Data中即可。
线程组线程数根据需要进行设定
通过点击工具中部的右三角图标启动jmeter测试。启动完成后,我们可以通过jprofiler的CPU加载视图查看对应的method默认级别的加载耗时性能结果。以tree的形式展示,通过这样,你可以按照耗时进行有针对性的性能优化。同时,你可以通过jmeter的查看结果树界面查看每次请求的相应返回结果信息。jmeter会根据你的断言判断该请求是否成功。可以通过聚合报告查看整体测试的失败率等信息。通过配合线程组的同时启动线程量,以及响应时间等信息来进行压测,并出具测试报告。