• 性能测试基础知识


    性能测试一般关注的几方面:CPU占用率,I/O值,网络以及内存占用率
    1、CPU占用率
    2、内存
    用top指令来查看
    内存是查看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

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

    iostat -xk 1

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

     最后一列util表示一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比,100%无疑就需要优化了
     
    4、网络
    ethool eth0 看speed,查看总带宽
    知道总带宽后来看即时网速
    sar -n DEV 1 100 

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

     
    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闲置制造瓶颈
     

  • 相关阅读:
    spring profile 多环境配置管理
    搭建docker私服仓库
    ubuntu安装mysql添加密码
    yum源安装docker
    keep + haproxy 运行原理
    gitlab汉化
    什么是DevOps?
    Kafka高并发原理概述
    k8s + flannel 内网不能互通问题排查
    Flannel跨主机互联概述及容器网络拓扑图
  • 原文地址:https://www.cnblogs.com/garvicker/p/9288713.html
Copyright © 2020-2023  润新知