hi 大家好,今天飞测团队给大家带来一篇性能测试中java程序cpu耗时分析的技巧,希望对大家有帮助,有疑惑或者错误,欢迎交流和指正。

1概述

对java程序进行性能压测时,经常会出现cpu资源使用高,甚至资源不释放的情况。对于这类性能问题,可以通过jdk自带工具jvm去定位到cpu耗时较高的热点方法,下面就为大家详细介绍如何使用jvm去定位cpu耗时。

2连接jvm

1 开启jvm远程配置

通常连接方式是本地远程访问服务器的java虚拟机。下面以tomcat为例

进入tomat/bin目录,编辑catalina.sh文件,找到JAVA_OPTS,加入以下内容:

-Dcom.sun.management.jmxremote.authenticate=false

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.port=1085 -Dcom.sun.management.jmxremote

2 打开jvm可视化工具进行连接

进入jdk/bin目录,双击jvisualvm.exe

添加远程主机ip,点击“确认”

添加jmx连接ip:jvm port,点击“确认”。端口为com.sun.management.jmxremote.port=1085

3Jvm cpu耗时分析

进入抽样器页签,点击“CPU”按钮。Jvm会实时打印耗cpu热点方法,按照从大到小进行排序

点击“快照”按钮,生成nps的快照文件。快照会以线程为单位,将每个线程方法以调用树的形式展现出来。使用例子作为具体讲解:

1. 首先让调用树以时间(cpu)倒序排列

2. 找到应用线程(排除系统线程),按照时间一层层递归调用,最终找出最耗时的方法。

从下面截图可以看到,选取排序中第一个应用线程pool-1-thread-2,一层层展开调用数并结合。最后定位到getJedis方法自调用占用cpu时间达到90%,提给开发gg优化即可,是不是很简单

3. getJedis方法主要进行redis计数操作,每调用一次接口,程序会连接redis并做一次+1的逻辑,该方法占用cpu耗时90%。开发需要排查这段代码是否有性能问题,或者redis配置能否优化

坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注、转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期待的方向,有更多兴趣的欢迎切磋,我们微信订阅号,联系方式如下:

推荐文章

java测试模块耗时,性能测试技巧:java程序cpu耗时分析相关推荐

  1. C/C++程序CPU问题分析

    转载地址:http://www.10tiao.com/html/473/201606/2651473094/1.html   程序的CPU问题是另外一类典型的程序性能问题,很多开发人员都受到过程序CP ...

  2. jmeter的java测试框架_性能测试学习之路 (四)jmeter 脚本开发实战(JDBC JMS 接口脚本 轻量级接口自动化测试框架)...

    1.业务级脚本开发 登录脚本->思路:在线程组下新建两个HTTP请求,一个是完成访问登录页,一个是完成登录的数据提交. 步骤如下: 1) 访问登录页 2) 提交登录数据的HTTP PS:对于业务 ...

  3. sisoftware java测试_SiSoftware理论性能测试10980XE vs 3950X vs 7900X vs 9900K

    本帖最后由 jerrytsao 于 2019-11-23 19:14 编辑 转总现在修身养性, 不方便上论坛, 帮贴 https://www.sisoftware.co.uk/2019/11/20/i ...

  4. java全角数字_JAVA技巧(JAVA全角和半角的转换代码)

    实现代码如下: public class change { public static void main(String[] args) { String QJstr="全角转半角DAO&q ...

  5. dhrystone测试结果_Linux性能测试工具-UnixBench--安装以及结果分析-阿里云开发者社区...

    UnixBench unixbench是一个用于测试unix系统性能的工具,也是一个比较通用的benchmark, 此测试的目的是对类Unix 系统提供一个基本的性能指示,很多测试用于系统性能的不同方 ...

  6. Vscode java 环境搭建及使用技巧

    Vscode java 环境搭建及使用技巧 文章目录 Vscode java 环境搭建及使用技巧 java环境要求 vscode环境要求 vscode java文件的建立 使用 code-runner ...

  7. Java SE 9:使用IntelliJ IDE开发和测试模块之间的隐式可读性(第5部分)

    I have already discussed many theoretical concepts about "Java 9 Module System" and also d ...

  8. java中测试计算能力_CPU运算性能测试、JAVA性能创纪录_三星 I728_手机其它OS-中关村在线...

    CPU运算性能测试: 我们采用CPU测速软件(主要考察运算能力包括:整数加法.整数乘法.浮点加法和浮点乘法)来测试三星i728的CPU运算速度并与Qualcomm 7200 400MHz的HTC Ty ...

  9. 软件性能测试分析与调优实践之路-Java应用程序的性能分析与调优-手稿节选

    Java编程语言自从诞生起,就成为了一门非常流行的编程语言,覆盖了互联网.安卓应用.后端应用.大数据等很多技术领域,因此Java应用程序的性能分析和调优也是一门非常重要的课题.Java应用程序的性能直 ...

  10. java基础的综合能力体现,测试你适不适合做程序员

    想入行,别着急,测试下自己到底适不适合入行,你跟程序员之间也许就只差个测试. 测试链接: https://www.bilibili.com/video/av52519027 根据本人多年从业以及学习经 ...

最新文章

  1. winform如何保持TreeView节点展开和折叠的状态
  2. java操作字符串的工具类StringUtil
  3. 内存分段分页机制理解_深入理解虚拟机,JVM高级特性-自动内存管理机制
  4. 系统:Centos 7.2 内核3.10.0-327.el7.x86_64 # 内核需要高于2.6.32
  5. SQL.变量、运算符、if、while
  6. 卷积神经网络(CNN)之MNIST手写数字数据集的实现
  7. 文档级关系抽取方法,EMNLP 2020 paper
  8. hdu 1284 钱币兑换问题
  9. 命令让手机临时root_Linux 最常用命令(简单易学,但能解决 95% 以上的问题)
  10. python给定dna等分成两个序列_分析DNA序列中的串联重复序列
  11. 测井解释-泥岩-煤层-砂岩-石灰岩-白云岩-硬石膏-岩盐-水
  12. WPA-PSK无线网络破解原理与过程
  13. 战场地图上的 Faked Shadow 基本实现
  14. C# 委托、匿名委托、Lambda表达式详解
  15. S32K144(2)时钟配置
  16. python编写一个名片_详解Python做一个名片管理系统
  17. 解决 The resulting partition is not properly aligned for best performance
  18. MYSQL5.7设置账号密码复杂度、密码有效期、账号锁定等策略
  19. 又见block(一):block是什么?
  20. 未来时代量计算机科幻游戏,“八本科幻未来时代小说”到那个我们可以想象的极限,享受科幻美...

热门文章

  1. rdkit smiles支持和扩展
  2. 手把手教你做小米商城-商品展示页面
  3. 2015年全国大学生电子设计竞赛专题系列之综合测评-Multisim使用技巧
  4. burpsuite https 社区版_BurpSuit添加CA证书拦截HTTPS通信
  5. 微信没有回车键怎么换行_微信打字怎么换行
  6. 思科服务器首页怎么修改,修改思科服务器cimc地址
  7. 第17节 三个败家子(17)——少侠孙坚
  8. 如何防止QT程序未响应
  9. 【macOS免费软件推荐】第1期:MuseScore
  10. 一些实用的电脑小技巧(1)