性能瓶颈是导致系统性能下降的主要原因,及时发现并解决这些瓶颈,能够显著提升系统的响应速度和用户体验。本文将探讨性能测试中常见的性能指标瓶颈。
性能测试指标
CPU使用率:衡量CPU在一段时间内被使用的比例,反映了 CPU 的繁忙程度。
内存使用率:系统中已使用的内存量占总内存量的比例,对于评估系统性能和稳定性至关重要。
事务失败率:在一定时间内,系统处理的事务中失败的事务数量占总事务数量的比例。
TPS(Transactions Per Second,每秒事务数):是衡量系统处理能力的重要性能指标,反映了系统在单位时间内能够处理的事务数量。
平均响应时间:在一定时间内,系统处理多个请求所花费时间的平均值。
常见瓶颈原因分析
CPU使用率瓶颈:一般漏洞
1.CPU使用率持续 >80%-90%
可能原因:配置太低;算法逻辑低效、复杂;大量临时对象分配引发频繁GC;大量磁盘网络I/O。
2.CPU使用率存在波动
可能原因:
定时任务触发:每日报表生成、缓存刷新、周期性同步其他服务数据;
同步锁竞争:多个线程频繁争用同一锁,如数据库连接池争用;
I/O等待:磁盘或网络I/O阻塞导致CPU空闲后突增。
3.CPU使用率递增
可能原因:
内存泄漏:频繁Full GC导致CPU占用上升;
缓存失效或穿透:缓存命中率下降,大量请求穿透到数据库,如Redis缓存Key集中过期;
单次查询全量数据,未分页处理。
内存使用率瓶颈:高危漏洞
1.内存使用率 >99.99%
可能原因:配置太低、内存泄漏、被测服务事务需要占用的内存大。
2.内存使用率递增
可能原因:内存泄漏:未释放对象引用;数据库连接、网络连接等未正确释放。
事务失败率瓶颈:
只要遇到事务失败,一定要精准定位问题原因,确认是合法的错误还是不合法的。
可能原因:脚本参数化问题;JMeter的线程数数量不支持;请求超时:锁竞争;复杂查询未命中索引;大事务处理未分批次提交;网络延迟;网关限制;异步行为逻辑处理存在问题,易出现事务失败;被测服务连接数数量达到瓶颈,多出来的线程可能会被拒绝处理。
TPS瓶颈:
1.TPS随着时间递减
可能原因:内存泄漏
2.随着并发数的增加,TPS不变或缓慢递增
200并发=>200tps 300并发=>300tps 400并发=>300tps
可能原因:网关限流排队等待;数据库连接池限制;Nginx负载均衡。
平均响应时间瓶颈:
1.平均响应时间逐步递增
可能原因:内存泄漏、CPU使用率>99.99%、限流。
2.响应时间过大、影响用户体验
可能原因:慢SQL;复杂的算法或代码逻辑;数据库连接问题(公网环境下);特殊的业务逻辑,比方说文件下载,文件拉取;服务器配置过低(CPU、内存、网络);限流机制触发阻塞等待逻辑。
评论区