【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, '小米手机');

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

--
-- 表的结构 `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,
 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来解决这个超卖的问题,先体验体验并发带来的问题

在这里插入图片描述

相关文章

文章浏览阅读1.3k次。在 Redis 中,键(Keys)是非常重要的概...
文章浏览阅读3.3k次,点赞44次,收藏88次。本篇是对单节点的...
文章浏览阅读8.4k次,点赞8次,收藏18次。Spring Boot 整合R...
文章浏览阅读978次,点赞25次,收藏21次。在Centos上安装Red...
文章浏览阅读1.2k次,点赞21次,收藏22次。Docker-Compose部...
文章浏览阅读2.2k次,点赞59次,收藏38次。合理的JedisPool资...