近期参与过一个红包雨的功能开发,并与测试人员一起工作完成了这个功能的压测。该项目是针对国外项目进行的,并使用了公司的经费,使用了AWS服务器进行了压力测试。由于该功能只是短期使用,公司无法承受大量资金燃烧,因此该功能在产品上线后不久便停止了使用。
由于该项目是公司内部的,因此无法向外界透露。此外,我虽然曾经参与过该项目的压测工作,但并未独立完成过压测工作,因此并不太放心。因此,为了更好地掌握压测技术,并掌握实际操作的经验,我选择在阿里云上花费个人资金进行了压测。总的来说,压测工作消耗资金较多,几个小时几十块钱的花费会让人倍感痛苦。
测试代码
正常一个接口响应时间需要控制在500毫秒以内,也就是0.5秒,这里我通过模拟业务正常响应时间给了0.3秒,打成一个jar包,然后通过一些脚本,让这个jar包开机自启动,同时通过配置弹性伸缩和负载均衡来进行扩容处理。
@GetMapping("/test") public String test(){ try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); return "压测出错啦"; } return "压测"; }
制作脚本的文章也给到你们:
https://blog.csdn.net/java_wxid/article/details/132921871?spm=1001.2014.3001.5501
在30秒内有5000个用户,每个用户每秒请求5次
在30秒内有5000个用户,每个用户每秒请求5次,需要5台2核4G的,3台扛不住,我试过了。阿里那边的客服和文档都提过这个事情,5000并发基本都是5个以上。
在30秒内有15000个用户,每个用户每秒请求5次
根据上面的推断,5000个用户30秒内,每个用户5次请求,需要5台2核4g的服务器,那么20000个用户可以是四倍的服务器数量,对吧。然后试过之后发现,异常概率太高,扛不住。于是我降到15000个用户,心想这应该够用了吧,发现还是不行。
然后看网上的说需要调大jemter的内存,我主机是16核心24线程64g内存,把jemter调个20g应该够用了吧,发现结果还是差不多。
然后我又想了一个思路,一台机器可能测不了那么多,因为1万用户的时候是可以保证接口没有异常的,1万5就不行了,服务器数量我认为是足够了,负载均衡clb最高1百万并发更加没问题,那么我就分3台机器测2万用户,在30秒内,每个用户每秒请求5次,因为其他二台笔记本性能不如台式机,每台笔记本5000线程,台式机直接1万,3台电脑分别用不同的网络,我用3台手机分别开3个热点,同时开始进行压测,这样总可以了吧。