cpu负载过高分析主机进程详情
安装perf工具包
#yum install perf -y
# which perf
/bin/perf
#创建分析脚本执行目录
mkdir -p /data/perf/
进程火焰图脚本
vim svg.sh
#/bin/bash
cd /data/perf/
#下载图像生成模块依赖
git clone https://github.com/brendangregg/FlameGraph
time=`date "+%Y%m%d-%H%M%S"`
perf record -F 99 -p 21537 -m 4 -g -a sleep 5
cp perf.data perf.data.$time
perf script > out.perf
./FlameGraph/stackcollapse-perf.pl out.perf >out.folded
./FlameGraph/flamegraph.pl out.folded > pmCount.svg
file=$time.svg
mv pmCount.svg $file
执行分析脚本生成火焰图
myself:/data/perf# sh svg.sh
查看火焰图进程为activeDef进程占用CPU过高
结论redis开启内存碎片策略,内存碎片自动整理引起cpu负载过高
方案:
1、关闭内存碎片自动回宿舍策略
2、调整内存碎片规则,降低频率
active-defrag-cycle-max :75 =>40 CPU使用率限制 75%=>40%
active-defrag-ignore-bytes :104857600 =>209715200 碎片开启清理值100MB=>200MB