当前位置: 首页 > ops >正文

Jmeter压测手册:脚本配置、服务器环境搭建与运行

        本文记录了我在新公司的首次压测遇到的一些问题以及解决方案。公司服务部署在国外,网络延迟导致的压不上去,需要本地调试脚本,然后用国外服务器压测的过程。同时记录了过程中遇到的一些问题,特别是Jmeter本身占用CPU资源,需要修改参数。

安装包

Jmeter包,已调好配置参数:

通过网盘分享的文件:apache-jmeter-5.6.3.zip
链接: https://pan.baidu.com/s/1-L6ASOdnBwvWi5_gpAW1gw?pwd=4uce 提取码: 4uce 
--来自百度网盘超级会员v3的分享

脚本配置

1、新建线程组

2、脚本配置

新加HTTP请求

脚本配置

添加请求头

添加参数化

注意用相对路径,因为要拷贝到远程机器运行,绝对路径会找不到文件,运行不起来,还没报错。

3、压测报表

虚拟机配置

安装Java环境

1、先从官网下载jdk1.8.0_131.tar.gz,再从本地上传到Linux服务器

2、解压:tar -xzf jdk1.8.0_131.tar.gz,生成文件夹 jdk1.8.0_131

jdk存放目录:/home/azureuser/jmeter/jdk1.8.0_451

修改配置:vi /etc/profile

export JAVA_HOME=/home/azureuser/jmeter/jdk1.8.0_451

export PATH=$JAVA_HOME/bin:$PATH

加载配置 : source /etc/profile

查看是否安装成功:java -version

安装Jmeter

1、本地Jmeter打包。最好用跟本机一样的jmeter,不会出现插件不一致等导致的运行不起来

2、传到服务器

3、解压缩

 tar -xvzf apache-jmeter-5.6.3.tgz 

unzip

jmeter路径:/home/azureuser/jmeter/apache-jmeter-5.6.3

4、配置Jmeter环境变量。

vi /etc/profile,再添加如下变量

export JMETER_HOME=/home/azureuser/jmeter/apache-jmeter-5.6.3

export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:

export PATH=$JMETER_HOME/bin:$JAVA_HOME/bin:$PATH

5、source /etc/profile (让配置文件立马生效)

6、查看是否安装成功,执行命令:jmeter -v

设置Jmeter启动内存

1.创建setenv.sh文件

在jmeter的bin目录下新建setenv.sh配置文件,在文件中配置jvm参数

export JVM_ARGS="-Xms4096m -Xmx4096m -XX:MaxMetaspaceSize=2048m"

大小参考本机可用内存,50%-70%之间

修改Jmeter参数

 1、system.properties

增加mode=StrippedBatch

2、解决timewait问题
修改所有jmeter主机-负载机配置 使用httpclient4客户端
jmeter.properties
httpclient4.time_to_live=300000
httpclient4.validate_after_inactivity=1000
httpclient4.request_sent_retry_enabled=true
httpclient4.retrycount=2
hc.parameters.file=hc.parameters
httpclient.reset_state_on_thread_group_iteration=false

3、hc.parameters
http.connection.stalecheck$Boolean=true

4、客户端配置

运行jmeter

jmx文件单独放/home/azureuser/jmeter/jmx
jmeter安装于/home/azureuser/jmeter/apache-jmeter-5.6.3

本地文件上传到服务器,注意使用到的数据文件也要传过去,可以整个目录传(使用的ssh软件:electerm)

进入 jmx所在目录

jmeter -n -t hawbTracks.jmx -l result_hawbTracks_05310813.jtl -L DEBUG

jmeter -n -t hawbTracks.jmx -l result_hawbTracks_05312207.jtl -e -o ./result  生成html报告,result 目前提前清空

jmeter -n -t hawbTracks.jmx -l result_hawbTracks_06031927.jtl -e -o ./06031927_result

监控查看

1、压测指标QPS、RT。关注响应时间增加明显,QPS增量低,无需再加QPS,防止压挂服务器。

2、服务器情况查看

机器情况以Grafa查看

服务qps、响应,以及响应时间明细用skywalking查看

3、从网关层压测,所以网关服务器性能也需要关注下

4、压测服务器的性能也需关注下。可以开多个窗口,top命令看服务器情况

常见命令:

top:本机性能指标查看,1 - 每个cpu指标查看,MiB Mem-内存查看

ps -ef pid : 进程查看

报告查看

1、报告回传到本机

2、打开jtl文件

3、result中index.html浏览器打开

使用jmeter -n -t hawbTracks.jmx -l result_hawbTracks_05312207.jtl -e -o ./result  生成html报告,可以直接查看

问题记录

1、网络损耗

本地压测由于是中国网段压测美国网段,网络损耗巨大。对比如下:

本地压测情况,3个并发

服务器压测情况,压测服务器与被压测服务器都在美国

对比发现,网络损耗在600ms。所以需要使用同区域压测服务器来压,得到真实的性能情况。

2、Jmeter中响应时间疑惑

现象:本地Jmeter压测时间稳定在600ms左右,但是POSTMAN是偶尔600ms多,多数在200ms。

原因:Postman接口发送使用的端口,会有链接缓存,不会每次新建连接。现象上佐证:隔段时间请求是600+ms,不间隔再次访问是200ms。

3、服务端Jmeter运行报错,jp@gc组件找不到

原因:运行的官网下载的jmeter,里面没有相关组件导致

4、服务端Jmeter运行无数据生成,无报错,直接停止了

配置的脚本的,csv文件配置的windows中绝对路径,拷贝到linux上,找不到文件,导致运行不起来。

5、压测机本身性能问题,导致QPS上不去

1、关闭部分java程序。 ps -ef pid查看进程信息

2、增加jmeter内存大小

3、多台机器压测

4、修改jmeter配置 - 有用

http://www.xdnf.cn/news/14004.html

相关文章:

  • PIN to PIN兼容设计:MT8370与MT8390核心板开发对比与优化建议
  • react 使用 postcss-px-to-viewport 实现 px 自动转 vw 自适应
  • Docker Compose 部署 Prometheus + Grafana
  • NORA:一个用于具身任务的小型开源通才视觉-语言-动作模型
  • 基于Netty的TCP Server端和Client端解决正向隔离网闸数据透传问题
  • 轻量级顺序监控器监控 LLM 中的分解攻击
  • sticky设置了top但还是有大约1px空隙
  • [深度学习]全连接神经网络
  • 迁移学习基础
  • 最大闭合子图学习笔记 / P2805 [NOI2009] 植物大战僵尸
  • Nature Light: Science Applications>:拓扑光子学新进展!JR态实现纳米级精度光束整形
  • TOUGH模型软件
  • 最新 Python-PLAXIS 自动化建模技术与典型岩土工程案例实践应用
  • aflplusplus:开源的模糊测试工具!全参数详细教程!Kali Linux教程!(一)
  • 解决 Git 错误:error: src refspec master does not match any
  • 篇章五 系统性能优化——资源优化——CPU优化(1)
  • 在线招聘系统源码+SpringBoot + Vue (前后端分离)
  • CVPR2024迁移学习《Unified Language-driven Zero-shot Domain Adaptation》
  • 企业架构框架深入解析:TOGAF、Zachman Framework、FEAF与Gartner EA Framework
  • NLP学习路线图(四十五):偏见与公平性
  • 一套包含15个psd的电商网站UI适用于服装鞋包行业
  • Stone 3D使用RemoteMesh组件极大的缩小工程文件尺寸
  • 秘籍分享:如何让ZIP下载的源码拥有Git“身份证”
  • Spring Boot 开发提速技巧:从项目搭建到热部署全流程优化
  • ASCII码对应表,回车、换行、空格的ASCII码值
  • VSCode - VSCode 让未被编辑的标签页不被自动关闭
  • 论文略读:MUSE: Machine Unlearning Six-Way Evaluation for Language Models
  • vue纯前端根据页面或者后台数据,读取本地文档模板,填充数据后并导出
  • Node.js特训专栏-基础篇:3. Node.js内置模块的使用
  • 【工具教程】批量PDF识别提取区域的内容重命名,将PDF指定区域位置的内容提取出来改名的注意事项