一、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没有同步代码测试。