ab -t 2 -c 500 http://spider.alvinxiao.cn/swooles/redis_bf?goods_id=68
输出为:
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking spider.alvinxiao.cn (be patient)
Finished 11 requests
Server Software: nginx/1.15.11
Server Hostname: spider.alvinxiao.cn
Server Port: 80
Document Path: /swooles/redis_bf?goods_id=68
Document Length: 38 bytes
Concurrency Level: 500
Time taken for tests: 2.132 seconds
Complete requests: 11 #总共完成的请求数
Failed requests: 0
Total transferred: 2288 bytes
HTML transferred: 418 bytes
Requests per second: 5.16 [#/sec] (mean)
Time per request: 96902.909 [ms] (mean)
Time per request: 193.806 [ms] (mean, across all concurrent requests)
Transfer rate: 1.05 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.5 0 1
Processing: 669 1006 336.1 1022 1758
Waiting: 370 944 386.1 947 1757
Total: 669 1007 335.9 1022 1758
Percentage of the requests served within a certain time (ms)
50% 1001
66% 1085
75% 1194
80% 1194
90% 1332
95% 1758
98% 1758
99% 1758
100% 1758 (longest request)
tp6+redis实现商品秒杀的方法及ab压力测试
时间:2020-9-18 编辑:37°5 点个赞呗
本文对tp6使用redis队列方式进行商品秒杀,已经用ab压力测试来测试其运行压力【方法比较简单,后续还会用swoole来进行商品秒杀测试】
测试环境:windows10、php、nginx
测试工具:phpstudy、ab压力测试工具、redis、mysql
1、为了测试得更直观,我创建了两个数据表
a、商品表(total为库存):
2、在测试之前,先把秒杀的商品信息放入redis队列里。
我先定义了要秒杀的商品数组;
3、然后随便写个生成订单号的方法:
4、开始写一个用户秒杀的功能方法,其中可对上述张表进行操作,订单号调用上面的生成订单方法。
这里为了直观显示,我自动虚拟了请求用户的uid,也更好的看出哪些用户抢到了商品。
5、开始ab测试,快捷键win+R,输入cmd,找到输入命令进入ab文件夹,输入命令进行测试
-n:请求数
-c:压力测试并发数
-k:保持链接
-r:出错不退出,继续执行
输出为:
在执行完后,我们回到redis桌面管理工具,和数据表,看看数据是否已经存储和发生改变:
a、redis数据
此时我们可以看到redis里多出了秒杀到手的用户数据列表,66就是我们上面链接传的商品id,50就是商品总数里每个对应一个用户。
b、查看商品表,看看库存是否已经发生改变,有没有为负数。其结果证明是成功的,总数已经变为0.
c、订单表:
6、我们再测试对编号为68这个商品进行秒杀,2秒内发送请求,一次并发为500个:
从上面数据可以看出,2秒的时间内,并发为500时,只有11个请求成功。
再回到数据表看看数据:a、redis数据
从图中看出编号为68这个商品的数量2秒多的时间里剩余库存为17条:
再看看秒杀抢购到的用户为多少人:
从图可看出,抢到商品的用户为33人。
那么数据表的是否也一样?
b、数据表:
商品表编号为68的这商品,库存剩余17个:
秒杀到的订单表,抢到的用户总数为33个:
从上面的数据表和redis数据队列,可以看出一些不同。
本文由37°5【https://www.alvinxiao.com 】【https://blog.alvinxiao.com】原创,转载请注明来源。请注意原创和打造和谐的网络环境,谢谢!