Linux服务器解析出现问题,云平台linux服务器问题场景分析思路及工具箱

前言

本文主要结合笔者在苏宁云平台支撑工作中的实践,以基于经验切实有效的判定分析方式贯穿, 整理了云平台linux服务器(下文中区分了物理机及虚拟机)运维中的常见问题场景、分析工具箱及判别思路.主要包含以下三部分:

1、linux服务器CPU、IO、内存性能异常的常用工具、判定标准、以及分析思路

2、linux服务器异常宕机的故障可能的原因、定位方法与常规分析思路

3、linux服务器丢包的问题可能的原因、定位方法与常规分析思路

读者范围:中高级linux服务器运维人员

注:本文结合问题图景枚举了各个tool与分析关联较大的参数及用法,以起到一个示例说明,各工具的详细用法需要自行阅读研习man手册.

linux服务器CPU、IO、内存性能异常

cpu异常

575873530d459fdeb5fd0eed9549c7a2.png

图1  cpu 异常分解

toptop -H -d 1 -c高亮列及运行进程 z x y选择 shift+L/Rarrow

pidstat-d磁盘读写报告io 统计

-r内存使用及缺页

-u cpu

-l展示命令行及参数

-w switch

-t显示线程的统计

-T每秒展示活动进程的cpu 使用率pidstat -u 1按线程组关系聚合展示cpu 消耗时间,帮助找出busy 线程pidstat  -t 1 -T ALL

sar-b块统计

-B页面

-r页面使用统计

-R页面回收统计

-d磁盘使用统计

-q调度统计

-S swap

-m运行频率

-v文件 inode dentry活动统计

-w调度switch

-W换入换出统计

-n网络 DEV, EDEV, NFS,      NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6,      EICMP6 and UDP6

-s 00:00:00 -e 00:21:00指明要查看的开始结束时间

iotop

iostat

nmon分析 nmonvisulizar

nmonvisulizar是来自于ibm 的nmon可视化分析工具

sysrq开启开关echo 1 > /proc/sys/kernel/sysrq打印进程堆栈echo t > /proc/sysrq-triggereg.如果已经softlockup 且业务影响已然明显,停业务后用下面命令产生一个vmcoreecho c > /proc/sysrq-trigger

strace-c统计系统调用次数及时间

-f也trace子进程调用

-e指明关心的调用 eg. -e      open,write

eg.命令执行时挂起,了解进程挂在哪个syscallstrace cmd arg进程系统调用开销较大,获取syscall统计strace -p PID -c

gdbbt查看执行堆栈

frame切换工作帧用户进程的cpu消耗影响系统整体使用,配合debuginfo及代码可大致梳理出占用逻辑,attach后,进程会STOPgdb -p PID

perf

perf top在线采样及展示-e指明事件,默认是cycle,全部时间可perf list 查询

-G调用图

-F采样频率

-d刷新间隔

-p特定进程

-C特定核perf top -d1 -G -F 99 -zshift + e 可展开堆栈视图shift + c 可折叠堆栈视图

perf record/reportrecord输出采样文件perf.data文件

report解析perf record -F 99 -a -g -p PID -C 6 sleep 5perf report

内存异常

b18e30b5b54ad669c871556d17232123.png

图2 内存异常分解

一般检查freecat /proc/self/statuscat /proc/self/smapsnumastat  -mnumactl --hardwarecat /proc/meminfo

zoneinfocat /proc/zoneinfo |egrep "zone|min|low|high|free|present"....Node 0, zone   Normalpages free     3195167min      13740low      17175high     20610present  3361280nr_free_pages 3195167high:  186high:  186

三条水线

sysctl -a|grep extra_free_kbytes min_free_kbytes extra_free_kbytes的组合值构成三个水线直接回收线 MIN min_free_kbytes

后台回收线 LOW 5/4*min_free_kbytes +      extra_free_kbytes

后台回收停止 HIGH 3/2*min_free_kbytes +      extra_free_kbytes

物理页面情况cat /proc/buddyinfoNode 0, zone      DMA      2      2      1      1      1      0      1      0      1      1      3Node 0, zone    DMA32    730    596    414    339    277    214    159    127     85     68    557Node 0, zone   Normal    447    558    348    166     72     45   1021    888    607    252   2661

内核结构缓冲slabtop 了解当前内核数据结构内存消耗

io异常

da7692c89f04642956cccc1658594168.png

图3 io 异常分解

io scheduler

cfq deadline noop

blktrace & blkparser

当意外的io 延迟发生,需要深入了解io延迟分布,需要使用blktrace & blkparser 工具进行细致分析

dd

学会合理使用oflag标志 sync 同步刷出数据 direct 绕过pagecache

fio

用来标定系统io能力的便捷工具fio -filename=/dev/mapper/vg_os-testlv  -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=8k -size=100G -numjobs=96 -runtime=60 -group_reporting -name=mytest

du & df

面向块占用及文件系统占用的查询分析

strace可以看出两个命令原理的差异:df 读取文件系统信息,du stat 各个文件然后累加两者出入较大需进一步考察:是否存在空洞?是否一个文件用户已经看不到但是文件系统还没有真正删除?(就是打开文件被删除的情况  lsof +L1)是否被某些挂载点隐藏了之前的目录文件?df 显示错误的话怀疑是否fs损坏?

网络异常场景

3b772f2a6d106437ddb8ba4187c530b5.png

图4 网络异常分析

ethtoolethtool -S关注drop  error

tc统计检查tc -s -d qd关注包drop情况

ss netstat iftop常用连接查看netstat -ntpnetstat -ntplss -ie

tcpdump-i待抓取的网口名字

-w抓包文件,可以是时间格式化串

-G回滚时长,单位秒

-c抓取多少个包后退出

-s抓取部分报文,单位字节

-r读取抓包文件离线分析

-z调用gzip等工具做压缩

-Z切换user 运行,默认是tcpdump

-B设置buf大小,不然抓不全单位KB 10240

eg.tcpdump tcp port 80 and host

tcpdump  -s0 -w %m_%d_%H_%M_%S.pcap -G 5 -z gzip -Z root -c 100000 -i any

宕机场景分析

b1158962575f5b27701ff3756ea84158.png

图5 宕机场景分析

dropwatch

crash工具log查看宕机关联日志

bt查看宕机位置

sys查看基本信息crash  vmcore  vmlinuxvmlinux 来自于kernel debuginfo包,是带调试信息的二进制内核镜像如果系统未正确生成vmcore, 需检查 /etc/kdump.conf 配置及其中的设定vmcore 路径此处讨论已开始涉及内核态问题,常见异常分析领域不再展开

总结

本文场景化地总结了云平台几类常见的linux server异常分析思路及toolset, 篇幅所限无法面面俱到,但如开篇提到,真正的快速有效的问题判别定位离不开对系统领域的熟悉与细致缜密的判断,以场景化方式灵活地运用好工具箱,达到由表及里,由浅入深的理解系统,快速高效解决线上问题。 Havefun:)

关于作者

谢英豪苏宁科技集团云平台中心高级工程师,长期耕耘于linux内核及操作系统的支撑领域,保障苏宁云环境线上海量kvm server farm的稳定高效运行.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值