结合网上的一些参考,自己总结了一下压测秒杀接口未生成秒杀订单可能的原因,并给出了相应的解决方案,仅供参考。
1.是否能正确生成每个用户及其userTicket的配置文件
正确的输出文件应该与上图相似,具体由什么符号分隔两个数据,可以自己定义,注意与JMeter中的CSV数据文件设置中的格式保持一致就行。
如果生成的userTicket为NULL,检查生成userTicket的代码中对应接口的url是否正确,检查设置的userId格式是否正确
2.在JMeter压测时,添加结果树监听器,用来检查发起请求的每个用户是否正确
userTicket应该与配置文件中的userTicket对应,不必一个个检查,按理说只要每个线程的userTicket不相同即可
3.检查结果树中的响应数据,看能否正常跳转
本人用JMeter压测商品列表接口时,结果树中的响应正确的数据
压测秒杀接口时,结果树中的响应数据有误,初步猜测,可能是因为出现超卖现象,而导致服务器异常,后续会继续寻找解决办法
秒杀商品出现超卖情况
秒杀订单成功生成
4.用户生成的cookie可能具有时效,确保没有以上问题后,需要先清空redis中的key,重启项目,再重新执行UserUtil.java(不用将用户导入数据库操作,直接重新生成userTicket即可),再压测就会发现生成订单了。