项目预览地址:http://miaosha.adxiang.top/
后端:SpringBoot,MyBatis
前端:Thymeleaf,Bootstrap,Jquery
中间件:Druid,Redis,RabbitMQ
服务器类型:阿里云轻量应用服务器
CPU核心数:单核
内存:2G
磁盘:40G
用一段代码往数据库里插入了1500条用户信息,并生成相应的用户Token,保存在tokens.txt中
使用JMeter来进行压力测试,由于我的阿里云服务器配置较低,压测的时候出现很多问题,而且不能测试太多线程
所以,我就改用我的的Windows电脑进行测试,采用的也是本地MySQL和本地Redis
QPS:是指每秒内查询次数,比如执行了select操作,相应的qps会增加。QPS = 总请求数 / ( 进程总数 * 请求时间 )
1500个线程*10次,平均QPS = 1076/sec
自定义变量模拟多用户
1500个线程*10次,平均QPS = 652/sec
并发的瓶颈在数据库,如何减少对数据库的访问呢?最有效的办法就是加缓存
下面的压测都是在安全优化之前进行的
1500个线程*10次,平均QPS = 2315/sec
优化后QPS提高为原来的2倍,但仍然有一些不足
由于我将商品列表的HTML页面缓存到Redis,并设置了有效期为60秒,也就是说,60秒之内该页面的商品数量是不会发生改变的
自定义变量模拟多用户
1500个线程*10次,平均QPS = 1696/sec
优化后QPS提高为原来的2.6倍
在后期优化的时候,存在RabbitMQ接收不到的情况,后来发现是我本地程序和服务器部署的程序使用了同样的对列名,也就是在这个生产消费者模式中,存在两个消费者。则就会在我本地产生一次接的到,一次接不到的问题