【JMeter】压测工具的使用

序言

JMeter需要Java安装环境,下载与安装链接
https://blog.csdn.net/fangkang7/article/details/100170330

1. JMeter安装

  1. 下载地址
    https://www.yuque.com/u30882/rx39g7/tkvmkn

  2. 启动
    在这里插入图片描述

  3. 然后就会出现一个图形化的界面
    在这里插入图片描述

  4. 设置中文显示
    在这里插入图片描述
    在这里插入图片描述

  5. 官方文档
    https://www.hissummer.com/

2. JMeter使用

  1. 添加一个线程组
    在这里插入图片描述
  2. 线程数就是用户量Ramp-Up period指的是每个线程间隔多长时间,如果设置为0,就是并发;
    在这里插入图片描述
  3. 选择http请求
    在这里插入图片描述
  4. 添加需要请求的接口
    在这里插入图片描述
  5. 开始启动请求
    在这里插入图片描述

3. 检测秒杀的一个案例

  1. 公共文件
<?php

 header("content-type:text/html;charset=utf-8");

 $dsn='mysql:host=localhost;dbname=seckill';
 try {
       $conn= new PDO($dsn, 'root', 'root');
       $conn->exec("set names utf8");

 } catch (PDOException $e) {
  		exit('数据库连接失败,错误信息:'. $e->getMessage());
 }

 $price    = 10;
 $user_id  = 1;
 $goods_id = 1;
 $sku_id   = 11;
 $number   = 1;

 //生成唯一订单
 function build_order_no(){
   return date('ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
 }

 $sql="select number from ih_store where goods_id='$goods_id' and sku_id='$sku_id'";//解锁 此时ih_store数据中goods_id='$goods_id' and sku_id='$sku_id' 的数据被锁住(注3),其它事务必须等待此次事务 提交后才能执行
 $rs  = $conn->query($sql);
 $row = $rs->fetch(); //获取一行数据
?>
  1. 购买文件
<?php
require 'common.php';


$sql="select number from ih_store where goods_id='$goods_id' and sku_id='$sku_id'";//解锁 此时ih_store数据中goods_id='$goods_id' and sku_id='$sku_id' 的数据被锁住(注3),其它事务必须等待此次事务 提交后才能执行
$rs  = $conn->query($sql);
$row = $rs->fetch(); //获取一行数据

if ($row['number']>0) {//库存是否大于0
    $order_sn=build_order_no();
    $sql="insert into ih_order(order_sn,user_id,goods_id,sku_id,price)
    values('$order_sn','$user_id','$goods_id','$sku_id','$price')";
    $conn->query($sql);

    //库存减少
    $sql="update ih_store set number=number-{$number} where sku_id='$sku_id'";
    $f = $conn->query($sql);
    if ($f) {
        // 库存减少成功
    } else {
        // 库存减少失败
    }
} else {
    // 库存不够
}
echo "success";
  1. 数据库文件
--
-- 数据库: `big`
--

-- --------------------------------------------------------

--
-- 表的结构 `ih_goods`
--


CREATE TABLE IF NOT EXISTS `ih_goods` (
  `goods_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `cat_id` int(11) NOT NULL,
  `goods_name` varchar(255) NOT NULL,
  PRIMARY KEY (`goods_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;


--
-- 转存表中的数据 `ih_goods`
--


INSERT INTO `ih_goods` (`goods_id`, `cat_id`, `goods_name`) VALUES
(1, 0, '小米手机');

-- --------------------------------------------------------

--
-- 表的结构 `ih_log`
--

CREATE TABLE IF NOT EXISTS `ih_log` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `event` varchar(255) NOT NULL,
 `type` tinyint(4) NOT NULL DEFAULT '0',
 `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

--
-- 转存表中的数据 `ih_log`
--


-- --------------------------------------------------------

--
-- 表的结构 `ih_order`
--

CREATE TABLE IF NOT EXISTS `ih_order` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `order_sn` char(32) NOT NULL,
 `user_id` int(11) NOT NULL,
 `status` int(11) NOT NULL DEFAULT '0',
 `goods_id` int(11) NOT NULL DEFAULT '0',
 `sku_id` int(11) NOT NULL DEFAULT '0',
 `price` float NOT NULL,
 `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单表' AUTO_INCREMENT=1 ;

--
-- 转存表中的数据 `ih_order`
--


-- --------------------------------------------------------

--
-- 表的结构 `ih_store`
--

CREATE TABLE IF NOT EXISTS `ih_store` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `goods_id` int(11) NOT NULL,
 `sku_id` int(10) unsigned NOT NULL DEFAULT '0',
 `number` int(10) NOT NULL DEFAULT '0',
 `freez` int(11) NOT NULL DEFAULT '0' COMMENT '虚拟库存',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='库存' AUTO_INCREMENT=2 ;

--
-- 转存表中的数据 `ih_store`
--

INSERT INTO `ih_store` (`id`, `goods_id`, `sku_id`, `number`, `freez`) VALUES
(1, 1, 11, 500, 0);

这是在检测我的一个秒杀案例,发现库存成了-3.这个案例只是一个简单的初始版本,后边会用redis来解决这个超卖的问题,先体验体验并发带来的问题

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咔咔-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值