【性能测试】接口压力测试,定位分析和实际案例模拟解析。

【应用类型分类】

系统结构从上向下、操作系统资源从下向上,2种方式分析。

IO bound:表示高负荷的内存使用以及存储系统,大量数据处理的存储过程。如:mysql、oracle异常。

CPU bound:高负荷的cpu占用,一个批量处理cpu请求以及数学计算的过程。如webserver、mailsever

【定位分析】

CPU:50%警告、70%告警;90%严重

稳定运行时:

1.vmstat统计1-id的计数;2.sar -u统计1-%idle的计数;3.dstat统计1-id1的计数;

4.mpstat -P ALL统计1-%idle的计数;5.ps统计cpu的计数

满载负荷时:

1.vmstat,r计数大于1则表示负载;2.sar -q,runq-sz逻辑颗数;3.dstat -p,run的cpu逻辑颗。

异常和错误时:

安装perf捕获处理器错误信息,需要2.6.31以上版本号才可支持。(查看版本号命令:cat /proc/version、或者uname -r),官方说明:http://www.brendangregg.com/perf.html

常用命令(安装工具的时候注意linux联网):安装yum install perf*、perf --help、perf list

内存:50%注意、70%告警;80%严重

稳定运行时:

1.free,查看使用情况;2.vmstat,查看使用情况;3.sar -r;4.ps。

满载:

1.vmstat,查看si/so比例辅助swapd和free。so数值越大,swapd占比越高,内存肯定已经饱和。

2.sar-W,查看次缺页数。sar命令次缺页面多意味着已经在不停地和swap打交道,证明内存已饱和。

3.查看内核日志有误OOM内存溢出机制的kill进程。当内存不够会出发内核的OOM机制。

4.dmesg | grep killed。

异常和错误:

1.查看内核有误physical failures。2.通过工具valgrind等进行检查。有计数则异常。

 

网络:通过查看发现收发包的吞吐速率达到网卡的最大上限,网络数据报文有因为这类原因而引发的丢包、阻塞等现象都证明当前网络可能存在瓶颈,在性能测试为了减少网络的影响,一般我们都是在局域网中进行测试执行。

稳定运行时:1.sar -r DEV的收发计数大于网卡上限,表示收发包的吞吐速率达到网卡上限;2.ifconfig RX/TX带宽超过网卡上限,表示有延迟;3.cat /proc/net/dev的速率超过上限,表示有丢包;4.nicstat的util的基本满负荷,表示有阻塞。

满载时:1.ifconfig dropped有计数;2.netstat -s“segments retransmited”有计数;3.sar -n EDEV rxdrop txdrop有计数。表示统计的丢包有计数,证明已经满了。

错误:1.ifconfig,errors错误有计数;2. netstat -i,"RX-ERR"/"TX-ERR"错误有计数;3.sar -n EDEV,rxerr/s""txer/s";4.ip -s link,”errors“错误有计数。

 

IO:40%注意;60%高警;80%阻塞。

正常运行:1.iostat -xz,%util参数;2.sar -d,%util参数;3.iotop的利用率很高;4.cat /proc/pid/sched |grep iowait;

满载:1.iosstat -xnz 1,“avgqu-sz”>则表示有满载嫌疑;2.iostat await>70,有满载嫌疑;

错误:1.dmesg 查看io错误 ;2.smartctl /dev/sda查看错误信息。

 

【实际案例】

一、系统负载监控案例:CPU颗粒数为恒定值,超过则阻塞。

命令:

1.uptime(运行时长、用户数、服务器过去1分钟、5分钟、15分钟队列中的平均进程数负载数)

2.w(当前在线用户的详细信息),如果运行时长较短,可能是重启过,需要检查是否异常导致重启

3.如果平均进程负载数0.8以下,表示正常。1-3表示负载。5-15表示有问题。15以上负载严重,需要分析进程调度策略,检查是否已经引起阻塞。如有阻塞,需要用ps和top检查实时状态。

4.实时监控小技巧:uptime |awk '{print (NF-2)}',uptime |awk '{print (NF-1)}',uptime |awk '{print NF}'

字段解释:

%sy内核空间占用cpu百分比;

%ni用户进程空间内改变过优先级的进程占用CPU百分比;

%id空闲CPU百分比

%wa等待输入输出的CPU时间百分比;过高需要iostat和sar分析IO性能是否有瓶颈。

%hi硬中断占用CPU百分比;过高需要/proc/interrupts、/proc/irq/pid/smp_affinity、服务irqbalance是否配置成功、以及CPU的频率,通过这些命令帮助系统打散优化系统的硬件中断

%si软中断占用CPU百分比;常见中断由网络引起,从网卡到IP层的数据报文收发延迟,以及长时间写日志导致软件中断。

 

二、系统监控分析案例:

常用命令:top、htop、dstat、nmon、glance等用户资源分析命令。

重点命令:top最全、最完整、最频繁的命令,类似windows的任务管理器。实时更新正在运行的进程和系统载荷情况,包括系统负载、cpu利用分布情况、内存使用、每个进程的内存使用情况等信息。

TOP页面分解:

1.任务队列信息;2.进程状态信息;3.CPU信息;4.内存信息;5.进程信息;

 

CPU监控:

1.当前cpu利用率=1-%id=%us+%sy(内核空间占用cpu的百分比)+%si(软中断占用cpu的百分比)(指网卡到ip层数据报文收发的延迟处理,或者长时间写日志也会造成软件中断)

2.cpu图形展示组件:gnuplot

 

内存监控:

1.buffer/cache会占用物理内存,当系统需要的时候,通过drop cache可以释放内存。

2.举例说明:本来free -m(物理内存剩余150)、drop cache(执行内核同步和drop内核调用后)、sync(释放cache/buffers内存后执行,防止数据丢失)、free -m(重新检查物理内存剩余值,会增加buffers和cached的内存值之和)

3.公式:

物理内存总数mem_total=men_used+mem_free。

实际使用的物理内存数-buffers(内核缓存的内存量)/cache(缓冲交换区总量)=used-buffers-cache

实际可用的物理内存数+buffers/cache=free+buffers+cache

交换分区对应的内存总数swap_total=swap_used(使用的交换区总量)+swap_free(空闲的交换区总量)

 

进程监控:

1.top展示的是进程信息,可用ps检查实际线程级信息。

2.字段说明:

PID:进程号

user:进程所有者的用户名;

PR:优先级;

NI:nice值,负值表示高优先级,正值表示低优先级;

VIRT:进程使用的虚拟内存总量,单位KB,VIRT=SWAP+RES

RES:进程使用的、未被换出的物理内存大小,单位KB,RES=CODE+DATA

SHR:共享内存大小,单位kb;

%CPU:上次更新到现在的CPU时间占用百分比。

%MEM:进程使用的物理内存百分比;

TIME+:进程使用的CPU时间总计,单位1/100秒。

COMMAND:命令名/命令行。

【top技巧]

top+enter+H:进入top配置页面

top+enter+d:进入间隔刷新配置,输入间隔秒数,可开始刷新。

top+enter+f+A+d:删除A-PID列,新增UID列;

top+enter+1:切换单颗CPU信息和平均CPU信息。

top -b:批处理模式;需要在文件中保存,并输出时必带参数,否则会打印乱码)

top -c:命令/程序名 触发

top -d:设置延迟间隔;系统默认为3秒,举例:top -d 5,改为每五秒刷新一次结果

top -n:设置迭代数量;退出前监控的具体次数,举例:top -n 3,监控3次数据后退出。

top -p:监控特定的PID

top -u或-U:用户名或者UID

举例:top -b -d 1 -n 3 >top.log,表示重定向日志打印到文本中。(必须加-b,否则会显示乱码)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章