压测性能优化
压测结果总是达不到预期,首先要大致判断性能可能出现的瓶颈点,再有针对性的具体分析,这种情况下可以从以下几个方面来排查:
1、压测策略设置是否合理,正常情况下,压测过程分为起压、加压、稳定施压几个阶段,起压不能设置的过高,加压不能递增得过快;
2、带宽是否足够用,可根据一次报文请求、响应大小 * QPS * 8 与带宽大小进行比较判断带宽是否够用;
3、接口请求的报文、报文头参数、响应结果报文等是否过大,过大的报文会影响用户请求时间和响应时间,导致系统并发处理能力下降;
4、同一个页面(特别是首页、活动承接页的)请求接口是否过多,一般建议同一个页面的接口不要超过3个;
5、SLB/NGINX参数设置是否合理,如连接数大小、空闲关闭时间等参数;
6、HTTP线程池参数设置是否合理;
7、数据库是否存在慢SQL,一般耗时超过0.5s的都认为是潜在的慢SQL,超过1s的都认为是慢SQL,建议在测试环境(非线上环境)做一遍全面的慢SQL排雷压测,PR链路涉及到的所有关键表,压测前建议单表数据量在800W以上进行压测,数据量太少不容易发现慢SQL;
8、数据库方面优化:通过SQL逻辑优化、索引优化、历史数据定时备份(单表数据量建议不要超过500W)、读写分离、分库分表等提升数据库查询能力;
9、缓存更新策略是否正常,如有些系统设置每5分钟缓存和数据库进行一次更新同步,此时性能出现明显下降,这种情况下明显更新策略有问题,缓存更新策略需要重点关注是否可能存在雪崩、穿透的的情况;
10、代码优化,如线程阻塞问题等;
11、架构方面的优化,如没有缓存的可以通过增加缓存来降低数据库压力从而提升系统性能、或者单台服务器的可以考虑负载均衡等等;