JMeter压测

JMeter

JMeter官网:http://jmeter.apache.org/download_jmeter.cgi

压测时候碰到空指针:cookie可能为空,要提前判断

10000个线程:mysql

自定义变量模拟多用户

1.测试计划   添加配置元件  CSV Data Set Config

2.引用变量${}

可以用配置文件,导入多用户信息。

关于循环次数:https://blog.csdn.net/u013908944/article/details/97383303

JMeter命令行

1.在windows上录好jmx

2.命令行 sh jmeter.sh -n -5 xxx.jmx -l result.jtl

-n不使用图形界面、-t输入脚本、-l输出结果

3.吧result.jtl导入jemeter

redis压测工具:redis-benchmark 

1.100并发 1w请求

qps:6w多

2.100字节

springboot打war包

1.添加spring-boot-starter-tomacat的provided依赖

2.添加maven-war-plugin插件

3.修改启动类

war包要在tomcat里

jar包直接

 

注:

 

qps:

5000并发+循环次数10次:第一次655 第二次1200

 

多用户下出现了超卖现象:

怎么解决超卖现象?

超卖场景:不同用户在读请求的时候,发现商品库存足够,然后同时发起请求,进行秒杀操作,减库存,导致库存减为负数。

最简单的方法,更新数据库减库存的时候,进行库存限制条件,在reduceStock(GoodsVo goodsvo)这个方法里,sql要多加一个stock_count > 0 ,使用数据库特性来保证超卖的问题,只有stock_count还大于0的时候才去读stock_count然后减1操作

 

其他解决方案(超卖)

1.redis事务处理

我们可以使用redis中的监听(watch)方法,去监听库存数量,一旦库存数量在其他客户端发生改变,后续操作则会失败。

2. redis分布式锁
分布式锁确保只有一个线程会操作库存

  • 加锁(占个位置,后续的进不来):setnx命令: 只在键key不存在的情况下,将键key的值设置为value 。若键key已经存在, 则不做任何动作。
  • 解锁(用完了,就把位置让出来):del(key)
  • 锁超时(万一中间出现点意外,没有解锁,过几秒会自动释放)expire(key,30)

3.redis队列(rpoplpush的安全队列)

把每一件商品都lpush到redis队列中,利用lpop从队列中去取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值