性能测试一般关注的几方面:CPU占用率,I/O值,网络以及内存占用率



1、CPU占用率



2、内存



用top指令来查看




memetestpro有什么用 memtestpro要跑到多少_数据库


内存是查看MEM部分


要至少有10%free内存,used不超过85%为宜,过高则会导致内存溢出


 


CPU则是查看Cpu部分


持续used高于95%说明进入瓶颈,最大上线应在80%~85%,合理范围是60%~70%以下


 


3、I/O


查看上图的wa值,即磁盘I/O占用CPU百分比,如果比较高就


ps -eo state,pid,cmd


memetestpro有什么用 memtestpro要跑到多少_memetestpro有什么用_02

这个可以看进程的状态,如果是类似D这种的应该就是有问题的进程,可能就是造成I/O比较高的原因,需要杀掉


iostat -xk 1


memetestpro有什么用 memtestpro要跑到多少_缓存_03

通过这个方法可以查看哪个磁盘的I/O比较高,当然也可以捎带手看一下CPU的利用率,或者直接拿他来看I/O是不是过高也可以


 最后一列util表示一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比,100%无疑就需要优化了


 


4、网络


ethool eth0 看speed,查看总带宽


知道总带宽后来看即时网速


sar -n DEV 1 100 


memetestpro有什么用 memtestpro要跑到多少_数据_04

很方便查看网速是否过大进入瓶颈


 


5、各类性能测试的含义


容量测试:当随着用户增加TPS不在增加,则此TPS为最大容量


负载:按60%或80%最大容量(TPS)加压,查看各项数值


疲劳:长时间,查看各项数值


 


6、如何根据数据进行问题定位


先看各项,如果都不高就是没问题的


 


CPU利用率和I/O是反向的,CPU利用率高则 I/ O小, I/ O大则CPU利用率就低,因cpu的工作效率要高于磁盘,而进程在cpu上面运行需要访问磁盘文件,这个时候cpu会向内核发起调用文件的请求,让内核去磁盘取文件,这个时候会切换到其他进程或者空闲。当这种读写请求过多就会导致不可中断睡眠状态的进程过多,从而导致负载高,cpu低的情况。


 


缓存是为了解决CPU速度和内存速度的速度差异问题 


内存中被CPU访问最频繁的数据和指令被复制入CPU中的缓存,这样CPU就可以不用去内存中取数据了,CPU只要到缓存中去取就行了,而缓存的速度要比内存快很多 


 


MySQL的数据是存储在硬盘中,如果需要进行sql查询,需要先把数据从磁盘加载到内存中。当在数据特别大的时候,如果执行的sql语句没有索引,就会造成扫描表的行数过大导致I/O阻塞,或者是语句中存在死锁,也会造成I/O阻塞,从而导致不可中断睡眠进程过多,导致负载过大。具体解决方法可以在MySQL中运行show full processlist命令查看线程等待情况,把其中的语句拿出来进行优化。


 


所以网络导致其他正常但CPU利用率不高制造瓶颈,CPU不够导致数据传入后也无法加快速度,制造瓶颈,内存不够,导致CPU无法及时要到想要的数据形成CPU利用率上不去,制造瓶颈,I/O过大导致进程堆积,CPU闲置制造瓶颈