性能测试的目标:
提供服务的系统,扛得住任何时候大批量线上用户的正常访问。
系统稳定性:长时间一定并发量访问下,系统是否会崩溃;
系统性能:事务处理时间、服务器cpu、服务器内存等
影响性能因素:
1、代码逻辑、代码实现;
2、数据库;
3、资源:系统配置(CPU、内存、硬盘IO)、网络带宽等。
涉及类别:
1、负载:不同负载下,系统表现;
2、压力:极限负载下,系统表现;
3、稳定:长时间一定负载下,系统表现。
执行计划:
1、了解系统架构,数据流链路;
2、明确性能测试需求:达到怎样的性能指标?指标哪里来?来源靠不靠谱?(用户行为分析、评估量、友商or竞争对手量、经验值等);
3、场景设计、工具选择、脚本编写、仿真环境准备(机器配置、机器数量、依赖方服务配置、数据库数据、仿真数据等);
4、执行测试脚本;
5、采集数据:QPS、CPU、内存、错误率、链路中各服务的响应时间、数据库执行时间等;
6、分析数据,给出结论。
常见问题:
1、线性、指数方式内存泄漏;
2、代码存在无限循环、死闭环;
3、资源遗漏:数据库操作、流操作未关闭;
4、中间层、依赖方问题;
5、资源配置:分配不足、或过度分配;
6、线程阻塞、死锁;
7、服务器配置;
......
查看nginx每秒请求数: tail -f access.log | awk '{print $4}' | uniq -c
查看cpu idle: vmstat 1
查看内存:free -m(free -m | grep "Mem" | awk -F" " '{print "totle:"$2,"used:"$3,"free:"$4,"shared:"$5,"buff/cache:"$6,"available:"$7}')
查看进程:top、ps -aux | grep xxxx
查看nginx某接口访问数量:cat access.log | grep xxxx | wc -log
查看TIME_WAIT数量:ss -s 或 netstat -tnlp | grep TIME_WAIT | wc -l
查看文件或文件夹大小:du -sh 文件或文件夹