一、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
二、 网卡异常分析
· 网卡丢包分析详情
while true;do sleep 5;time=`date "+%Y-%m-%d %H:%M:%S"`;drop=`ifconfig eth0|awk -F'[ :]+' '/RX/&&/dropped/{print$8}'`;echo $time $drop;done
· 查看主机网卡流量按进程排序
# yum install nethogs -y
# nethogs eth0
· 查看主机网卡流量来源ip
#iftop