当前位置:网站首页>使用ApacheBench来对美多商城的秒杀功能进行高并发压力测试
使用ApacheBench来对美多商城的秒杀功能进行高并发压力测试
2022-08-08 10:27:00 【用户9127725】
秒杀功能众所周知,低廉的价格会引来很多用户趋之若鹜的争抢点击,导致一系列的服务器负载问题,服务器负载太大而影响程序效率也是很常见的,Apache服务器自带有一个叫AB(ApacheBench)的工具,可以对服务器进行负载测试
同时美多商城的秒杀功能也会被高负载影响,从而导致超卖现象
安装xampp软件
进入 c:/xampp/apache/bin
基本用法: ab -n 全部请求数 -c 并发数测试url 可以将ab.exe 加入系统环境变量;或直接切换置 ab 目录执行。如: C:WindowsSystem32> cd C:xamppapachebin
关于秒杀很好理解,就是每一个用户抢到商品之后,库存进行递减操作
#定义秒杀接口
def miaosha(request):
res_one = News.objects.get(pk=1)
if res_one.pd > 0:
time.sleep(5)
with connection.cursor() as c:
c.execute(' update news set pd = pd - 1 where id = 1 ')
return HttpResponse('ok')
else:
return HttpResponse('没有了')
索然逻辑上很严谨,代码也很简单,但是在高并发没有锁的情况下,数据库会过载导致超卖现象,也就是库存变为负数
于是就得引入redis来解决这一个问题:
r = redis.Redis(host='localhost', port=6379)
#定义过载限制
def limit_handler():
"""
return True: 允许; False: 拒绝
"""
amount_limit = 3 # 限制数量
keyname = 'limit' # redis key name
incr_amount = 1 # 每次增加数量
# 判断key是否存在
if not r.exists(keyname):
# 为了方便测试,这里设置默认初始值为95
# setnx可以防止并发时多次设置key
r.setnx(keyname, 0)
# 数据插入后再判断是否大于限制数
if r.incrby(keyname, incr_amount) <= amount_limit:
return True
return False
#定义秒杀接口
def miaosha(request):
res_one = News.objects.get(pk=1)
if limit_handler():
#if res_one.pd > 0:
time.sleep(5)
with connection.cursor() as c:
c.execute(' update news set pd = pd - 1 where id = 1 ')
return HttpResponse('ok')
else:
return HttpResponse('没有了')
这样只要配合这个方法,在进行修改mysql数据库的操作,就可以防止超限
边栏推荐
猜你喜欢
随机推荐
七、图结构
播放器的一些改进
ReentrantLock源码分析和使用案例
mysql 性能分析
Categorized input and output, Go lang1.18 introductory refining tutorial, from Bai Ding to Hongru, go lang basic data types and input and output EP03
键值数据库中可以对值进行查询嘛?
English token preprocessing, used to process English sentences into words
STM32F103ZE+SHT30检测环境温度与湿度(IIC模拟时序)
「控制反转」和「依赖倒置」,傻傻分不清楚?
八、排序与搜索
「每周译Go」这次我们来点不一样的!--《How to Code in Go》系列上线
新款“廉价”SUV曝光,安全、舒适一个不落
文档数据库中的文档可以有相同的数据结构嘛?
2022.8.6 模拟赛
01-MQ介绍以及产品比较
高并发下秒杀商品,你必须知道的9个细节
面试突击72:输入URL之后会执行什么流程?
idea安装步骤
"Inversion of Control" and "Dependency Inversion", can't you tell the difference?
什么是本质安全?