(四)Java秒杀项目之JMeter压测
一、JMeter入门压测
1、打开JMeter工具,选中测试计划->右键添加->线程(用户)->线程组,页面中的线程数就是并发数,页面中的Ramp-Up时间(秒)表示通过多长时间启动起来这些线程,如果值为0,表示这些线程一起启动起来。
2、选中线程组->右键添加->配置元件->HTTP请求默认值,来配置一个默认请求。页面中的协议填http,服务器名称或IP填localhost,端口号填8080。
3、选中线程组->右键添加->Sampler(取样器)->HTTP请求,页面中的名称填商品列表,协议、服务器名称或IP、端口号就不需要填了,因为上一步中添加了默认的。路径填/goods/to_list,这是我们之前的商品列表代码的接口。
4、选中线程组->右键添加->监听器->聚合报告,显示压测的总结结果。选中线程组->右键添加->监听器->图形结果,显示压测的图形结果。选中线程组->右键添加->监听器->用表格查看结果,显示压测的表格形式结果。点击绿色三角启动按钮开始压测。可以选择保存,后缀默认为.jmx,也可不保存。
5、聚合报告也页面中的Throughput表示吞吐量,可以简单的理解为QPS。
6、终端使用top命令监控cup,Load Avg表示负载。增大线程数再运行可以看到负载增大。
二、自定义变量模拟多用户
1、选中商品列表->右键禁用,可以禁用该请求
2、选中线程组->右键添加->取样器->HTTP请求,名称填获取用户信息,路径填/user/info
3、点击下方添加按钮添加参数,键为token,值为浏览器Network中do_miaosha请求响应中Set-Cookie的token。运行测试
4、本地新建config.txt,填入18912341234,2db1f35954a245e99bf7a3feb903e97c代表一个用户,可以添加多个,测试不同的用户。
5、选中线程组->右键添加->配置元件->CSV数据文件设置,文件名选config.txt,变量名填userId,userToken,分隔符填英文逗号
6、修改获取用户信息请求,参数键token的值为${userToken},运行测试。
三、Redis压测工具redis-benchmark
1、redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000
其中-c 100表示100个并发连接,-n 100000表示100000个请求
2、redis-benchmark -h 127.0.0.1 -p 6379 -q -d 100
其中-q表示简短地输出,-d 100表示存取大小为100字节的数据包
3、redis-benchmark -t set,lpush -q -n 100000
其中-t set,lpush表示只测试set和lpush命令的性能
4、redis-benchmark -n 100000 -q script load “redis.call(‘set’, ‘foo’, ‘bar’)”
只测试某些数值存取的性能,其中script load “redis.call(‘set’, ‘foo’, ‘bar’)”表示只测试“redis.call(‘set’, ‘foo’, ‘bar’)”这条命令的性能,注意是英文引号
四、Spring Boot打war包
1、添加spring-boot-starter-tomcat的provided依赖,provided依赖就是编译时的依赖,运行时不需要。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
2、添加maven-war-plugin依赖,默认情况下是打jar包。
<build>
<finalName>${project.artifactId}</finalName> <!-- 打出来的war包的名字与artifactId相同,即mymiaosha4 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
3、改为打war包<packaging>war</packaging>
4、修改Mymiaosha4Application类继承SpringBootServletInitializer,并重写configure方法。
Spring Boot打war包这一小节,github没有同步代码测试。
(四)Java秒杀项目之JMeter压测的更多相关文章
- JMeter压测“java.net.BindException: Address already in use: connect”解决方法
之前在windows机上用JMeter压测,50并发下出现大量接口报“java.net.BindException: Address already in use: connect”错误. 从字面的意 ...
- 【Java分享客栈】未来迈向高级工程师绕不过的技能:JMeter压测
前言 因为工作需要,久违的从自己的有道云笔记中去寻找压测相关的内容,翻开之后发现还不错,温故一遍后顺便整理出来分享给大家. 题外话,工作8年多,有道云笔记不知不觉都6G多了,扫一眼下来尽是云烟过往,竟 ...
- jmeter压测过程中报java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider
由于在java中添加了第三方安全策略文件,具体请看https://www.cnblogs.com/mrjade/p/10886378.html,导致在用jmeter压测过程中会遇到以下错误 解决办法: ...
- jmeter压测、操作数据库、分布式linux下运行、webservice接口测试、charles抓包
一.jmeter压测 在线程组中设置好,然后添加http请求,t添加聚合报告查看压力测试结果,如图: 一般压测时间10-15分钟,如果是稳定性测试,一般n*12小时,这些并发用户一直在请求. tps: ...
- windows下Jmeter压测端口占用问题
https://blog.csdn.net/weixin_43757847/article/details/88188091 1 前情提要人脸识别项目中,云平台新增了人脸识别的校验接口.考虑到存在大量 ...
- 一文揭秘测试平台中是如何将测试用例一键转化Jmeter压测脚本
接上篇,一键转化将接口测试平台测试用例转化成Jmeter压测脚本思路,这里我首先在java 上面做了一个简单的实验,看看 转化的中间遇到的问题,这里呢,我只是给了一个简单的demo 版本, ...
- 在Linux CentOS上搭建Jmeter压测环境
本文的主要内容是介绍如何在Linux CentOS 服务器上面搭建Jmeter的压测环境整个详细的流程,来满足我们日常工作中对于压力测试环境搭建.压力测试执行过程的需求. 一.首先我们要准备四个东西, ...
- 性能工具之Jmeter压测Hprose RPC服务
概述 Hprose(High Performance Remote Object Service Engine),国人开发的一个远程方法调用的开源框架.它是一个先进的轻量级的跨语言跨平台面向对象的高性 ...
- jmeter 压测duobbo接口,施压客户端自己把自己压死了
jmeter 压测duobbo接口,jmeter代码不合理,导致每执行一次请求,会调用一次消耗内存的实例化.导致越压越慢,请求发不出去.这个时候需要考虑修改代码了. 截图中,tps越来越少. 原来初始 ...
随机推荐
- HDU - 5245 概率
JoyfulHDU - 5245 题目大意:有N*M个正方形,进行k次涂色,每次会随机的选两个正方形作为一个矩形区域的顶点,然后把这个区域内的涂色,最后问k次之后,预计被涂了色的正方形有几个(也就是数 ...
- 微信小程序_(校园视)开发用户注册登陆
微信小程序_(校园视) 开发用户注册登陆 传送门 微信小程序_(校园视) 开发上传视频业务 传送门 微信小程序_(校园视) 开发视频的展示页-上 传送门 微信小程序_(校园视) 开发视频的展示页-下 ...
- Java_GUI小游戏--FlappyBird 橡树鸟
本文讲解的是一款来自独立游戏开发者Dong Nguyen所开发的游戏FlappyBird,也叫橡树鸟 四个类代码: package Gary; import java.awt.*; import ja ...
- [题解] [AHOI2009] 跳棋
题面 题解 分类讨论, 考虑到只要所有的偶数点上都有棋子, 最左边的棋子就可以跳到最右边 题目第一问让我们求最少的在白格子上必须放的棋子数(不用考虑行动中放的棋子数) 考虑到这几种情况 有不少于两个红 ...
- 8.3 CSS样式
8.3 CSS样式 参考链接:http://how2j.cn/k/css2/css2-border/249.html 一.CSS有什么作用. 不使用css 给每一个单元格加上背景颜色 .就需要给每一个 ...
- javascript 取小数点后几位四种方法
javascript 取小数点后几位方法总结 Javascript取float型小数点后两位,例22.123456取成22.12,如何做? 1.通过substring截取. function getn ...
- 尚学堂requireJs课程---2、模块
尚学堂requireJs课程---2.模块 一.总结 一句话总结: # 将代码以及使用放到独立的闭包中去,并且赋值给了变量,便于外部访问 # return出了函数和变量(放在一个json对象中) # ...
- Redis内存碎片率
一. 内存碎片率mem_fragmentation_ratio = used_memory_rss / used_memoryused_memory :Redis使用其分配器分配的内存大小used_m ...
- wait/notify模拟线程池
线程创建和销毁会消耗很多的资源,当我们创建线程时,会发现cpu利用率很高,为了节省资源的使用,使用线程池是一个比较好的选择,当有任务需要执行时,随机分配给一条线程去执行,也可以删除任务,获取任务数量等 ...
- 设置placeholder 颜色
::-webkit-input-placeholder { /* WebKit browsers */ color: rgb(100, 193, 173); } :-moz-placeholder { ...