上篇文章【Thinkphp5实现悲观锁】已介绍过thinkphp5使用悲观锁实现高并发的场景,这篇文章将实际测试下。

在shell里进入到apache的bin目录,输入以下url:

ab -n 100 -c 100 http://www.xyh.com/index/index/mysql_unlock  【不加锁的情况,模拟100次请求,每次100个用户】

备注:如果提示socket: Too many open files (24),请执行ulimit -a,然后ulimit -n 1024。下图是我已经修改后的。

由于在本机测试,如果并发太大,机器报错,需要重新编译apache。我这里只是为了测试thinkphp加锁是否能满足业务需求,所以并发设为100个,用来测试即可。数据库的商品表,我把库存设为50个。正常情况应该是:goods商品表中库存total值为0,销量sell为50,orders订单表有50条记录。经过测试,发现不加锁的情况如下图:

库存tatol为3个,销量sell为47,orders订单表有49条记录。很明显这不符合实际的业务需求!(这还是100次并发的情况,如果几十万的并发,错误更加离谱。会直接给公司带来巨大的损失)

下面再看看加锁后的测试情况:

库存tatol为0个,销量sell为50,orders订单表有50条记录。符合预期,满足业务需求!

转载于:https://www.cnblogs.com/edward1108/p/7371837.html

Thinkphp5 用ab压力测试工具测试高并发请求相关推荐

  1. php 和mysql实现抢购功能_php处理抢购类功能的高并发请求

    本文以抢购.秒杀为例.介绍如何在高并发状况下确保数据正确. 在高并发请求下容易参数两个问题 1.数据出错,导致产品超卖. 2.频繁操作数据库,导致性能下降. 测试环境 Windows7 apache2 ...

  2. php处理抢购类功能的高并发请求,php处理抢购类

    ...d> 最近在做抢购系统,但头疼的是,在多用户高并发的情况下经常会库存出现问题.排查到,在同一时间内多用户同时下单导致查询和插入不同步了,而查询中跟插入又有时间差而在高并发的情况下导致库存问 ...

  3. php同时抢购 代码,php如何处理抢购类功能的高并发请求

    在高并发请求下容易参数两个问题 1.数据出错,导致产品超卖. 2.频繁操作数据库,导致性能下降. 本文主要和大家详细介绍了php处理抢购类功能的高并发请求,具有一定的参考价值,感兴趣的小伙伴们可以参考 ...

  4. Web大规模高并发请求和抢购的解决方案

    电商的秒杀和抢购,对我们来说,都不是一个陌生的东西.然而,从技术的角度来说,这对于Web系统是一个巨大的考验.当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要.这次我们 ...

  5. PostgreSQL数据库 OLTP高并发请求性能优化

    PostgreSQL数据库 OLTP高并发请求性能优化   2015-10-14 11:00:00|  作者:德哥:分类: PgSQL PerfTuning| 2015年度PG大象会报名地址: htt ...

  6. 达达O2O后台架构演进实践:从0到4000高并发请求背后的努力

    1.引言 达达创立于2014年5月,业务覆盖全国37个城市,拥有130万注册众包配送员,日均配送百万单,是全国领先的最后三公里物流配送平台. 达达的业务模式与滴滴以及Uber很相似,以众包的方式利用社 ...

  7. 淘宝商品详情页视频接口(视频参数,sku属性参数,销量参数等页面上的数据均可以采集,支持高并发请求)

    淘宝商品详情页视频接口(视频参数,sku属性参数,销量参数等页面上的数据均可以采集,支持高并发请求)接口代码教程如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须 ...

  8. 解秘 Node.js 单线程实现高并发请求原理,以及串联同步执行并发请求的方案

    最近在做一个支持多进程请求的 Node 服务,要支持多并发请求,而且请求要按先后顺序串联同步执行返回结果. 对,这需求就是这么奇琶,业务场景也是那么奇琶. 需求是完成了,为了对 Node.js 高并发 ...

  9. mysql 保证事物完整性_数据库高并发请求,如何保证数据完整性?详解MySQL/InnoDB的加锁...

    本文是对MySQL/InnoDB中,乐观锁.悲观锁.共享锁.排它锁.行锁.表锁.死锁概念的理解,这些在面试中也经常遇到,如数据库高并发请求,如何保证数据完整性?今天我查阅资料进行了MySQL/Inno ...

最新文章

  1. java 日志 生成器_自动生成 java 测试 mock 对象框架 DataFactory-01-入门使用教程
  2. 22、输入和输出重定向,管道,命令连接符,命令替换符
  3. MATLAB实战应用案例:欧拉法、改进欧拉法、ode45求解微分方程实例
  4. 斯坦福大学深度学习与自然语言处理第二讲:词向量
  5. Fetch API HTTP请求实用指南
  6. Android m 自定义下拉菜单,Android实现动画效果的自定义下拉菜单功能
  7. SAP Spartacus里Product Carousel componentData取数据的逻辑研究
  8. 使用jmap命令手动导出映像文件?
  9. 2020年产业互联网发展报告
  10. 【转】file_get_contents(php://input)的使用方法
  11. js或jquery如何获取父级、子级、兄弟元素(包括祖级、孙级等)
  12. JodaTime报时区异常错误
  13. java excel 转 图片_Java 将Excel转为图片、html、XPS、XML、CSV
  14. matlab 电流平均值,电流平均值谐波检测方法MATLAB仿真
  15. 大学计算机进制与转换教案,《进制转换》教案
  16. 【VulnHub靶场】——HARRYPOTTER第一部: ARAGOG (1.0.2)
  17. 常见嵌入式OS资料汇总
  18. js undefined和null区别
  19. directx是什么?
  20. Flink流式计算从入门到实战 三

热门文章

  1. 网页主动探测工具使用
  2. ii7+php5.5+phpMyAdmin-4.1.0
  3. silverlight RadGridView总结二(转载)
  4. Entity Framework技术系列之2:三种开发模式实现数据访问
  5. Java and Python: a perfect couple - Developer.com
  6. UESTC-1057 秋实大哥与花(线段树+成段加减+区间求和)
  7. iOS开发-获取设备型号信息
  8. Vue.js 跟踪对象新增属性
  9. cp复制文件和目录的使用举例
  10. logging 模块记录日志