当前位置:网站首页>使用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数据库的操作,就可以防止超限
边栏推荐
- 列存储数据库是什么呢?
- Leetcode 617. 合并二叉树
- 典型的图数据库有哪些呀?
- snmptrapd+snmptt接收告警并用py脚本发送
- What is intrinsic safety?
- 微服务分库分表
- 2022 world conference on robots is holding, intelligent robot booster to intelligent, digital transformation and upgrading traditional industry
- 3D激光SLAM:LIO-SAM整体介绍与安装编译
- Postman使用简单演示
- 列存储数据库是通过什么来定位的呢?
猜你喜欢

nacos安装

CentOS MySQL体系管理

01-MQ介绍以及产品比较

Jingkai Safety Supervision App technical service support

2022世界机器人大会即将举办,智能机器人助推传统行业向智能化、数字化转型升级

IR(红外遥控)基本原理

A concise tutorial on expanding (increasing capacity) of VMWare Esxi virtual system data storage

一、用户数据仓库

People's Congress Jincang database login, view database

目标检测中的Bounding Box Regression Loss
随机推荐
vs2019+boost library (boost_1_67_0) installation
技术分享 | 接口自动化测试之JSON Schema模式该如何使用?
分布式系统设计策略
快速定位线上慢 SQL 问题,掌握这几个性能排查工具可助你一臂之力
"Weekly Translate Go" This time we have something different!-- "How to Code in Go" series launched
Dubins曲线学习笔记及相关思考
目标检测中的Classificition Loss
Kubernetes资源编排系列之四: CRD+Operator篇
nacos安装
图数据库是使用什么作为数据模型的呢?
Leetcode 700. 二叉搜索树中的搜索
Postman使用简单演示
业务缓存之体系化设计与开发
学习笔记:CS520 Knowledge Graphs
Redis 定长队列的探索和实践
Using classification weights, it is easy to solve the problem of data imbalance
面试突击72:输入URL之后会执行什么流程?
语音聊天app开发——对用户更具吸引力的设计
开源一夏 | 牛plus,多层嵌套动态JSON该如何解析总结
《STM32MP1 M4裸机CubeIDE开发指南》第二十四章 DAC实验