性能测试过程中优化-2:

   由于上次三八女神秒杀活动宕机,马上又来一轮秒杀活动,所以这次要做好准备。

  1.  由于压测大批量数据,没有做分布式,所以把华为云压力机由8核16G 扩展到了 60核120G。
  2. jmeter内存由原来的“: "${HEAP:="-Xms4g -Xmx12g -XX:MaxMetaspaceSize=4096m"}" 调整到了“: "${HEAP:="-Xms30g -Xmx90g -XX:MaxMetaspaceSize=16384m"}"”; jmeter内存通常占物理内存的一半
    问题1:
    经过上面的设置后,承压数据相应的提升了,但也没有2秒发送2000个请求就会有很多的超时,阿里云监控性能没有任何提升,也看不错误日志,后来经排查是服务器的防火墙拦截了(同一IP大量的请求,从而拦截了其中一部分)

     解决办法:云维把华为云的压力机IP设置成了白名单,从而请求成功

    问题2:
    加压5秒发送4000个线程(每个线程2个请求),持续加压60秒,从而把服务器压夸,大量的业务接口响应出现了504,包含运营后台及支付接口
    解决办法:立即中断压测脚本,经运维排查是Nigx被压夸,从而Nigx扩容到了16个;从而可以2S发送5W个请求持续60S,错误率0.07% 95%及平均响应时间都在400毫秒内

    问题3:订单确认页面;2秒钟结算3000单(每个线程包含5个接口请求)   持续加压60秒  。 接口/order/settlement  平均响应时间10秒,95%用户响应时间14秒  还有报错; 问题定位 Mysql一个存储过程(生成单号)占用了资源,导致reborn-sys服务假死了

    解决方法:准备将分批预生成单号存入redis,从而接口直接在redis里取新单号

    问题4:支付订单调用微信支付接口报错(2秒种调2500次支付接口),经查微信接口禁止压测  如下

    解决方法:放弃压测支付;秒杀一般不压测支付,因为是在时间范围内支付即可。

    问题5:专题页面 2秒发送11000个用户(每个用户3个接口) 持续加压60秒。结果报如下错误:Non HTTP response code: java.net.NoRouteToHostException/Non HTTP response message: Cannot assign requested address (Address not available)

    解决方法:https://blog.csdn.net/zhangzhen02/article/details/105550515,从此该数量级压测通过

     问题6:专题页面 2秒发送11000个用户(每个用户3个接口) 持续加压60秒。结果报如下错误:Non HTTP response code: javax.net.ssl.SSLHandshakeException/Non HTTP response message: Remote host terminated the handshake

    解决方法:jmeter脚本里取样器的请求 KeepAlive去掉勾选即可

     

    最终结果:2秒种发送30000个用户访问(每个线程3个接口),持续加压60秒。95%用户响应时间在1.5秒。错误率为0

     

posted @ 2024-03-19 23:23  LCX测试小姐姐  阅读(40)  评论(0编辑  收藏  举报