OProfile分析服务的瓶颈和CPU100%问题的利器

OProfile是一个非常好的工具,在Linux下分析一个软件或者服务的系统消耗和占用,进而辅助我们找到系统的瓶颈。例如,我们开启Oprofile在redis服务中,然后找到结果中redis耗时最多的几个函数,然后去了解这些函数是用在了什么地方,是否可以优化或者避免。

Oprofile的安装流程网上很多,就不写了哈。我写了一个方面测试的shell脚本,在安装好Oprofile后,可以很方便地用来测试这些系统服务。
简单的用法是:
oprofile.sh "php test.php"
当然,也可以只做sleep,不执行具体命令。直接休眠100s,抓取系统执行中的各种系统消耗。
oprofile.sh "sleep 100"

shell的脚本代码如下:
  
  
#部分系统不支持time interrupt,会导致抓不到数据,可使用modprobe oprofile timer=1
#查看状态:dmesg|grep oprofile,会追加多一行
#!/bin/bash if [ $# -ne 1 ];then         echo "Usage: oprofile.sh command"         echo 'Example: /root/oprofile/oprofile.sh "php test.php"'         exit 2; fi echo `date -d "today" +%Y%m%d%H%M%S` opcontrol --start  --no-vmlinux opcontrol --reset $1 opcontrol --dump opreport -l opcontrol --stop opcontrol --shutdown
系统如果支持time interrupt的话,执行命令
dmesg|grep oprofile

OProfile分析服务的性能和瓶颈 - 徐汉彬Hansion - 技术行者
 否则的话,直接追加:
modprobe oprofile timer=1

我使用上述脚本来分析过一次Nginx的执行结果(通过http_load工具来跑nginx的压力测试):
OProfile分析服务的性能和瓶颈 - 徐汉彬Hansion - 技术行者

我们也曾经遇到过Web服务器莫名其妙CPU100%的奇怪问题,也是通过oprofile分析后才发现一些可疑的函数库调用,反过来分析代码,找到问题原因。
下面这个图片,就是发现libxml大量占用CPU,让我们发现代码中解析xml的相关代码使用不当导致的。
OProfile分析服务的瓶颈和CPU100问题的利器 - 徐汉彬Hansion - 技术行者
 转自 http://hansionxu.blog.163.com/blog/static/24169810920150541846331/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值