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

来源:互联网 发布:鲨鱼记账怎么导出数据 编辑:程序博客网 时间:2024/05/16 00:43
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 - 技术行者
 
0 0
原创粉丝点击