zprofiler三板斧解决cpu占用率过高问题(转载)
zprofiler三板斧解决cpu占用率过高问题
在开始使用zprofiler之前,先使用perf确认瓶颈点是否在native中。(以下操作需要root权限,需要pe协助操作)
如果线上服务器没有安装perf,可以到 http://yum.corp.taobao.com/taobao/6/x86_64/test/aliperf/aliperf-0.3.9-9.el6.x86_64.rpm 下载rpm包,然后安装。
使用 perf top 命令,查看当前系统的热点函数。
如上图所示的情况即表明,热点在java代码中,因为java代码是jit执行的,perf看不到其符号,所以默认归入perf-<pid>.map中。
如果热点在libjvm.so中的函数,可以联系我们团队,协助进一步分析。比如如果热点是jit相关的函数,一般是codecache或者jit相关参数的问题;如果是gc相关的函数,可以用zprofiler分析一下gclog,然后调整gc相关的参数。
排除其他可能,确定是java代码的问题之后,可以先做一个thread dump,在zprofiler上分析一下。
使用 thread dump 中的 运行态线程热点堆栈(load) 功能,就可以看到在运行线程中出现的最多的调用栈。如下图所示:
其实这里已经看到出问题的堆栈了,但是因为thread dump只是一个快照,当时没敢相信这么快就找到问题所在,所以还是觉得用Hot method Profiling看一下。
Hot Method Profiling 已经有专门的文章介绍,这里就不多说了,看圈子的置顶帖就可以了。
当时分析结果如下图:
这个结果非常明显,排第一的函数占了99%的cpu占用率。而且展开之后的调用栈跟前面在热点堆栈里面看到的调用栈一模一样。基本可以肯定问题就出在这里。
但是产品的小伙伴说这个地方是正常的调用,sql语句很久没有修改,数据库里面数据量也不大。为了一探究竟,决定做一个heap dump,看一下到底在处理什么样的数据?
做完heap dump之后,拷贝到zprofiler系统上分析。大概看了一下 "对象簇视图",没有什么特别大的对象。
然后又看了一下 “线程概览” ,可以在右边 "正则匹配" 的地方,根据线程名把相关线程过滤出来。
然后展开可以看到各层调用栈上的局部对象。如下图:
鼠标放上去,可以看到对象的内容。这里就可以看到正在查询的sql语句,以及相关的参数。
后来查出来的根本原因是有一个第三方组件没有升级导致的bug。
不过整个过程还是比较有借鉴意义的,希望对大家有帮助。
zprofiler三板斧解决cpu占用率过高问题(转载)的更多相关文章
- zprofiler三板斧解决cpu占用率过高问题
zprofiler三板斧解决cpu占用率过高问题 九居 浏览 171 2015-04-08 14:11:58 发表于:JVM性能与调试平台 zprofiler 上周五碰到了一个线上机器cpu ...
- 云服务器 ECS Linux 系统 CPU 占用率较高问题排查思路
https://help.aliyun.com/knowledge_detail/41225.html?spm=5176.7841174.2.2.ifP9Sc 注意:本文相关配置及说明已在 CentO ...
- Windows CPU占用率过高
今天调试程序,发现Windows7的CPU占用率一直为25%左右,如下图所示.四核25%,换成单核那就是100%的占用率了! 上图进入"进程"页面,单击"CPU" ...
- 使用jstack分析java程序cpu占用率过高
在项目中经常会碰到CPU占用率过高的问题,那么碰到这类问题应当如何处理呢?下面提供一种处理思路: 首先top -H -p <pid>以线程的模式查看java应用的运行情况,找到占用cpu或 ...
- 线上Java程序导致服务器CPU占用率过高的问题排除过程
博文转至:http://www.jianshu.com/p/3667157d63bb,博文更好效果看原版,转本博文的目的就算是个书签吧,需要时候可以定位原文学习 1.故障现象 客服同事反馈平台系统运行 ...
- 记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
博文转至:http://www.jianshu.com/p/3667157d63bb,转本博文的目的就是需要的时候以防忘记 1.故障现象 客服同事反馈平台系统运行缓慢,网页卡顿严重,多次重启系统后问题 ...
- Java内存、CPU占用率过高
windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码 linux下查找java进程占用CPU过高原因 Java 占用CPU使用率很高的分析 记一次线上Java程序导致服 ...
- 一次线上redis实例cpu占用率过高问题优化(转)
前情提要: 最近接了大数据项目的postgresql运维,刚接过来他们的报表系统就出现高峰期访问不了的问题,报表涉及实时数据和离线数据,离线读pg,实时读redis.然后自然而然就把redis也挪到我 ...
- redis实例cpu占用率过高问题优化
目录 一.简介 一.简介 前情提要: 最近接了大数据项目的postgresql运维,刚接过来他们的报表系统就出现高峰期访问不了的问题,报表涉及实时数据和离线数据,离线读pg,实时读redis.然后自然 ...
随机推荐
- button 去掉原生边框
button按钮触发 hover 时,自带边框会显示,尤其是 button 设置圆角时,如图: 解决办法: outline: 0;
- MySQL联结查询和子查询
2018-2-24 16:18:12 星期六 今天需要统计一个运营活动的数据, 涉及三个表, 分组比较多 活动描述: 每个人可以领取多张卡片, 好友也可以赠送其卡片, 20或40张卡片可以兑换一个奖 ...
- ASP.NET MVC5入门2之Ajax实现数据查询
开发环境:VS2013 数据库:SQL Server2008R2 架构:ASP.NET MVC5 开发语言:C# 代码下载链接:http://download.csdn.net/detail/u010 ...
- 新建项目虚拟环境及pycharm配置
基本操作 查询已有的虚拟环境 workon 激活虚拟环境 workon 虚拟环境名 退出虚拟环境 deactivate 删除虚拟环境 rmvirtualenv 虚拟环境名 查看python版本检查 p ...
- 业务侧有大量timeout请求超时日志
故障背景:程序日志发现有程序请求数据库有大量的timeout请求故障时间:xxx~xxx 故障排查:排查应用服务器和数据库服务器网络和其它硬件监控没有断点,数据库监控请求数当时时间段几乎为0 故障分析 ...
- 硬盘性能测试工具fio
如何衡量云硬盘的性能 IOPS:每秒读/写次数,单位为次(计数).存储设备的底层驱动类型决定了不同的 IOPS. 吞吐量:每秒的读写数据量,单位为MB/s. 时延:IO操作的发送时间到接收确认所经过的 ...
- CSS 三角形与圆形
1. 概述 1.1 说明 通过边框(border)的宽度与边框圆角(border-radius)来设置所需的三角形与圆形. 1.2 边框 宽高都为0时,边框设置的不同结果也不同,如下: 1.四个边框都 ...
- 洛谷P3345 [ZJOI2015]幻想乡战略游戏 [动态点分治]
传送门 调了两个小时,终于过了-- 凭啥人家代码80行我180行啊!!! 谁叫你大括号换行 谁叫你写缺省源 思路 显然,补给点所在的位置就是这棵树的带权重心. 考虑size已知时如何找重心:一开始设答 ...
- 【进阶1-2期】JavaScript深入之执行上下文栈和变量对象(转)
这是我在公众号(高级前端进阶)看到的文章,现在做笔记 https://mp.weixin.qq.com/s/hZIpnkKqdQgQnK1BcrH6Nw 阅读笔记 JS是单线程的语言,执行顺序肯定是顺 ...
- RCNN--目标检测
原博文:http://www.cnblogs.com/soulmate1023/p/5530600.html 文章简要介绍RCNN的框架,主要包含: 原图-->候选区域生成-->对每个候选 ...