声明:这是个人工作的流程总结,或多或少欢迎大家补充
1.性能测试目的
未来有3W用户,按照10%并发原则,要能支持300并发
系统能稳定运行
关注指标:响应时间。。。等
2.测试环境及素材确认
客户端及服务器软硬件环境
系统架构(几台服务器、数据库、集群、负载均衡等)
测试素材:
测试功能点(事务):
根据测试环境决定负载机台数(原则:负载机不能成为瓶颈)
3.设计场景
单项业务:1、 50、100、200、300并发数递增
组合业务:100、200、300并发递增运行30分钟
长时间测试:300 运行8小时
4.录制脚本
根据测试素材及测试功能点,做好事务
脚本增强(集合点、参数化、关联等操作)
5.设置场景并运行
并发数、运行时间、迭代次数等
6.运行场景同步监控系统资源
应用服务器、数据库服务器(cpu、内存、网络、磁盘)
组合业务及长时间测试用nmon记录服务器情况
根据运行情况定位问题并调优(内存、线程、cpu瓶颈、网络瓶颈)
7.性能测试报告
可能遇到的性能问题:
1. 在高并发的情况下,产生的处理失败(比如:数据库连接池过低,服务器连接数超过上限,数据库锁控制考虑不足等)
2. 内存泄露(比如:在长时间运行下,内存没有正常释放,发生宕机等)
3. CPU使用偏离(比如:高并发导致CPU使用率过高)
4. 日志打印过多,服务器无硬盘空间
如何定位这些性能问题:
1. 查看系统日志,日志是定位问题的不二法宝,如果日志记录的全面,很容易通过日志发现问题。
比如,系统宕机时,系统日志打印了某方法执行时抛出out of memory的错误,我们就可以顺藤摸瓜,很快定位到导致内存溢出的问题在哪里。
2. 利用性能监控工具,比如:linux下nmon,JAVA开发B/S结构的项目,可以通过JDK自带的Jconsole,或者JProfiler,来监控服务器性能,Jconsole可以远程监控服务器的CPU,内存,线程等状态,并绘制变化曲线图。
利用Spotlight可以监控数据库使用情况。
我们需要关注的性能点有:CPU负载,内存使用率,网络I/O等
3. 了解系统参数配置,可以进行后期的性能调优
最后要说的是:做性能测试的时候,我们一定要确保瓶颈不要发生在我们自己的测试脚本和测试工具上。