我在一家金融公司做软件测试工作,因为用户量大,以前经常出现性能问题,最近几年领导也非常重视性能压测,所以我也做了不少接口压测。
那么重点来了,压测在生产上压最真实,测试环境无法评估生产能满足多少tps,包括机器性能、数据库数据量、数据占比等,无法按比例估算。
生产压测毁青春,这是我们自娱自乐的话,每次都差不多通宵才能完成。去年3月公司财报要用到自己的直播软件,要达到求5分钟50万人进入观看,于是各种优化、限流,优化后上生产,在生产上压测性能和看看限流是否生效,结果直播结束后总人数才1W人。坑爹~~
今年又来了,要求5分钟10万用户,比去年评估低了一点,又要压,为啥呢,因为系统迁移了。不过这次确实压除了性能问题。 不多说,01:00版本发完,开始压测,3000并发起压守不行,最后调整成500也报错:
01:30-03:48夜开始各种优化,调整redis参数配置:maxTotal maxIdle minIdle,调优后还是报错,500并发都支持不了,3:30左右终于找到原因了,确实代码没处理高高并发情况,然后改代码部署。
03:50-04:00 部署好了就开始压,并发3000 TPS3:3.2万,错误率56%,为啥tps这么高,因为有错误的也算在内,错误日志返回403,查了半天,咋了呢,ng层限流了,开发运维不会关闭这个限流,关键人物不在场,over了,今天到此结束,写下报告发给邮件通知各位领导。
04:30下班了离开公司。
周一来了,各位老大说这不行啊,周三就要开始直播了,限流去掉再压,到后凌晨,开始了:
24:00-02:30发版出现问题,运维处理,我们干等着。
02:36-02:42 限流去掉压了3000并发,1.7万tps,没问题 ,看来不错呀~~
02:46-02:56 4000并发67.84%的报错,报错500,找不到原因,运维不相信 来个17000并发试试,结果不幸,顶层忙线程比较多,找不到原因,先这样。
还要上应用层限流代码,上完继续压有没有效果,4点多差不多结束了,写写报告,回家。
周二来了,还是不行啊,找原因,运维说可能熔断了,可能maxthread配置导致的,晚上继续压吧,这次我们经理挡住了,不能这么玩,晚上没有一个靠谱的支持。
周三直播开始,我没有去集体会议室观察流量情况,等直播结束了,报告出来了,总人数4000多人。说好的5分钟10万用户哪里去了,哈哈~~