沐沐今天想和大家分享一下性能测试过程中一些常见的问题,可以帮助性能学习初学者解决一些小疑惑。
一、性能测试都分为哪些种类?
负载测试:主要检查被测系统在既定负载下的性能表现,即通过逐步加压的方法,达到既定的性能阈值的目标(阈值的设定应是小于等于某个值,例如cpu<=80%等)。
压力测试:主要检查被测系统在极端条件下的表现,即通过逐步加压的方法,使得系统的某些资源达到饱和,简言之就是测试什么条件下可以把系统压奔溃。
并发测试:主要是验证系统的并发处理能力,即在同一时间内,多个虚拟用户同时访问同一模块、同一功能,通常的测试方法是设置集合点。
基准测试:系统中增加新模块时,需要进行基准测试来判断新模块对整个系统的性能影响。
稳定性测试:测试系统在一定负载下运行长时间是否会发生问题(例如会进行7*24小时的稳定性测试)。
二、性能测试的流程是什么?
熟悉系统架构:了解被测系统架构和通讯协议等。
明确测试范围:服务端(CPU、IO、网络、内存等)、程序接口(并发数、TPS、响应时间、事务成功率等)、数据库(配置参数、表结构、索引、慢查询等)。
明确测试指标:系统预计承载的用户量、并发用户数、TPS等。
选择测试工具:JMeter 、locust、Loadrunner、性能测试云平台等。
准备性能脚本:准备待测接口脚本,基准测试接口的入参、响应、异常测试等是否符合预期。
设计性能场景:根据实际业务,设计性能测试场景,例如单一场景、混合场景等。
执行性能脚本:执行脚本,关注TPS、错误率、响应时间等同时监控资源使用率。
分析测试结果:分析性能测试结果,对性能瓶颈进行调优。
性能回归测试:性能调优后进行回归测试。
输出测试报告:根据实际的测试情况,输出性能测试报告。
三、如何估算并发数?
通常估算并发用户数为在线用户数的10%-20%。
虚拟用户数=TPS*(runtime+thinktime)。
四、性能测试如何查找系统性能瓶颈?
服务器硬件瓶颈 。
网络瓶颈。
服务器操作系统瓶颈(参数配置)。
中间件瓶颈(参数配置,数据库,web服务器等)。
应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)。
五、如何找导致CPU瓶颈的程序?
系统CPU 利用率高可以关注一下IO(磁盘读写速度),有没有空闲等待,通常CPU利用率高都是IO问题,此时的中端与切换都高。
用户CPU利用率高,直接用top命令或者htop就可以找到系统进程ID和线程 ID,就可以很快找到对应的程序。
六、如何找到导致IO瓶颈的程序?如何监控IO?
网络IO监控我们可以监控网络中端、宽带、网络连接数以及网络了连接状态等;常用命令netstat、sar。
本地磁盘IO我们可以监控有没有IO的非空闲等待,用iostat命令查看。其他常用命令:iotop,sar。
以上内容是沐沐几年前的学习笔记,已经忘记知识获取来源,但是现在看来还是非要有用,因此分享给大家,尤其是对性能初学者比较有帮忙。接下来的文章,沐沐将持续分享性能测试实战中的一些经验总结。
The more we share,The more we have.
希望这篇文章对大家有用...