jmeter-线程数设置为1,循环10次没问题,循环100次出现异常

一、多次尝试,发现出现异常的接口大致相同。

解决办法:在第一个出现异常的接口下添加超时时间,固定定时器:2000ms,再次运行就没问题了。

二、压力机自身存在的问题

1)在网络编程中,特别是在短时间内新建的网络连接太多,经常出现
java.net.BindException: Address already in use: JVM_Bind的异常
Java.NET.BindException: Address already in use: connect

原因:

短期内新建 socket 操作太多,而 socket.close() 操作并不能当即释放绑定的端口,而是把端口设置为 time_wait 状态,过段时间(默认240s)才释放,用netstat -na能够看到,最后系统资源耗尽(windows上是耗尽了pool of ephemeral ports ,这段区间在1024-5000之间)

解决方法:
在运行 jmeter agent 的机器上,添加注册表条目

cmd中,输入 regedit.exe 命令回车打开注册表
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
右键Parameters
新建DWORD值,(十进制)设置为30秒。名称:TcpTimedWaitDelay,值:30。新建DWORD值,(十进制)最大连接数65534。名称:MaxUserPort,值:65534(可以更大一些)

基数选择十进制;以增大可分配的 tcp 连接端口数、减小处于 TIME_WAIT 状态的连接的生存时间

修改配置完毕之后记得重启机器才会生效

2)jmeter 发送请求后返回java.net.SocketException: Connection reset
这表明是测试服务器有问题,可以去页面验证下。有可能是要配置客户端的设置,如上面的工具运行设置。

java.net.SocketException: Socket closed

step1:
在 http 请求里面找到高级 implementation 选择 httpclient 4,connect设置为15000-300000毫秒。

step2:
在 jmeter 安装目录的 bin 目录下,找到 jmeter.properties 并打开。打开425行的注释,值设置为1:

httpclient4.retrycount = 1
httpclient4.idletimeout=<time in 1000 ms>
java.lang.OutOfMemoryError: Java heap space


原因:
观察运行 jmeter 机器的内存,占用较高,超过了 jmeter 设置的内存上限。

解决方案:
修改 jmeter 配置文件,调整内存可用的范围服务器
修改/bin/jmeter.bat文件:找到这2行

set HEAP=-Xms256m -Xmx256m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m

改成:

set HEAP=-Xms1024m –Xmx2048m(最大值不能超过系统内存的1/2)
set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m网络

{ “_t” : “StringResultObject”, “status” : 1030, “message” : “服务器发生错误”, “data” : null, “isSuccess” : false }

如遇到上面请求返回的reponse, 就要首先去服务器端的日志,通过日志来定位问题

Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host:
1
原因:

分布式测试时,server 和 agent 之间的链接有问题。单个机器排查后,发现是某个 agent 机器安装了多个网卡,rmi 远程的时候找的是虚拟机的网卡,致使链接失败。

解决方案:
禁掉不使用的虚拟机网卡,测试以后再恢复

java.lang.OutOfMemoryError: Java heap space
1
原因:
jmeter 是一个纯 java 开发的工具,内存由 java 虚拟机 JVM 管理,当内存回收不及时,堆内存不足时,就会报内存溢出错误。

概念补充:
内存泄露:应用使用资源之后没有及时释放,导致应用内存中持有了不需要的资源。

内存溢出:应用的内存已经不能满足正常使用了,堆栈已经达到系统设置的最大值,进而导致崩溃。

通常都是由于内存泄露导致堆栈内存不断增大,从而引发内存溢出。对 jmeter 而言也是如此,jmeter 测试过程中,如果内存溢出的话,一般会出现上面的提示:java.lang.OutOfMemoryError: Java heap space意思就是堆内存溢出,不够用了

解决方法:
知道了报错出现的原因是因为堆内存大小不足引起的,自然而然就会想到内存溢出的解决方法:调整堆内存大小。

步骤(以Windows系统为例,Linux系统类似):
打开jmeter.bat文件,按关键字“HEAP”搜索,把原来的配置改为如下:修改前:

if not defined HEAP (
rem See the unix startup file for the rationale of the following parameters,
rem including some tuning recommendations
set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
)
)

修改后:

if not defined HEAP (
rem See the unix startup file for the rationale of the following parameters,
rem including some tuning recommendations
set HEAP=-Xms512m -Xmx4000m
set NEW=-XX:NewSize=256m -XX:MaxNewSize=512m
)

set HEAP=-Xms512m -Xmx4000m:调整堆内存的大小

set NEW=-XX:NewSize=256m -XX:MaxNewSize=512m:调整堆内存中新生带的大小

PS:
这个值不是越大越好,要根据压测使用的机器而定,一般而言,堆内存的最大值不要超过物理内存的一半,否则容易导致 jmeter 运行变慢、卡顿甚至内存溢出(因为java本身的垃圾回收机制是动态分配内存,调整的时候其本身会占用很多内存),NEW分配的内存,不宜太大。

修改完成后保存,重启JMeter,即可生效。

这种修改堆大小的方法只适用一部分情况,并不是万能的,当需要模拟的线程数较大时,就需要根据具体情况采用分布式压测的方式了。

命令行运行 jmeter 时,一定要禁用“查看结果树”、“聚合报告”等监听器,因为真的真的真的很消耗内存。

磁盘监控工具有iostat & htop。
网络监控工具有iftop。
查看网络连接情况可以使用netstat -n | find /I "established" /c
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/628962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20240112-补 制作两个字符串字谜的最少步骤数

题目要求 给你两个长度相同的字符串 s 和 t。在一个步骤中&#xff0c;你可以选择 t 中的任意一个字符并用另一个字符替换它。 返回将 t 变为 s 的变位所需的最少步数。 字符串的 "字谜 "是指字符串中的相同字符具有不同&#xff08;或相同&#xff09;的排列顺序…

使用PyTorch实现混合专家(MoE)模型

Mixtral 8x7B 的推出在开放 AI 领域引发了广泛关注&#xff0c;特别是混合专家&#xff08;Mixture-of-Experts&#xff1a;MoEs&#xff09;这一概念被大家所认知。混合专家(MoE)概念是协作智能的象征&#xff0c;体现了“整体大于部分之和”的说法。MoE模型汇集了各种专家模型…

CMU15-445-Spring-2023-Project #4 - Concurrency Control

前置知识&#xff0c;参考上一篇博客&#xff1a;CMU15-445-Spring-2023-Project #4 - 前置知识&#xff08;lec15-20&#xff09; 通过添加一个锁管理器在 BusTub 中支持事务&#xff0c;然后将其用于并发查询执行。锁管理器将支持五种锁模式下的表锁和元组锁&#xff1a;int…

「解析」Jetson配置 git服务

这两天感冒了在家休养&#xff0c;想着把之前买的 Jetson 开发板用起来&#xff0c;买Jetson的初衷就是用来学习Linux系统&#xff0c;顺道可以部署算法&#xff0c;以及一些其他需求&#xff0c;相比树莓派而言&#xff0c;Jetson开发相对更贵&#xff0c;但是其配备了英伟达的…

电子学会C/C++编程等级考试2023年09月(八级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:最短路径问题 平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。 若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。现在的任务是找出从一点到另一…

详细讲解Python中的aioschedule定时任务操作

目录 前言1. 基本概念2. 基本API3. Demo 前言 如果下面的函数库无法执行&#xff0c;出现类似&#xff1a;&#xff08;前提是python3.7以上&#xff09; AttributeError: module ‘asyncio‘ has no attribute ‘run‘请检查run是否可跳转&#xff0c;如果无法跳转&#xff…

element plus 可选择树形组件(el-tree) 怎样一键展开/收起?实现方法详解

实现代码&#xff1a; 按钮&#xff1a; <el-button click"takeall" style"height: 24px">{{zhanstatus % 2 ! 0 ? "收起所有" : "展开所有"}} </el-button> 组件&#xff1a; <el-form-item label"可选择菜单…

harbor https

harbor https部署 准备docker-compose安装https 证书harbor安装访问harbor推镜像到harbor 准备 192.168.112.99&#xff0c;harbor&#xff0c;centos7 192.168.112.3&#xff0c;测试机&#xff0c;centos7 docker版本&#xff1a;docker-ce 20.10.16&#xff08;部署参考&a…

Redis主从+哨兵集群(基于CentOS-8.0)高可用部署方案

目录 一、环境描述 二、Redis 主从集群部署 2.1 Redis下载 2.2 Redis解压 和移动文件 2.4 编译、安装Redis 2.6 新建 bin 和 etc 文件夹 2.7 分发Redis 2.8 配置 2.8.1 主节点配置 2.8.2 从节点配置 2.9 启动Redis服务 2.10 验证主从服务 2.11 查看节点角色信息 2…

有序矩阵中第 K 小的元素

题目链接 有序矩阵中第 K 小的元素 题目描述 注意点 每行和每列元素均按升序排序找到一个内存复杂度优于 O(n) 的解决方案 解答思路 使用二分查找&#xff0c;思路为&#xff1a; &#xff08;1&#xff09;因为左上角的元素值更小&#xff0c;右下角的元素值更大&#xf…

初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(5)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

【Mybatis】说一下 mybatis 的一级缓存和二级缓存

​ &#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Mybatis ⛳️ 功不唐捐&#xff0c;玉汝于成 ​ 目录 前言 正文 一级缓存&#xff08;Local Cache&#xff09;&#xff1a; 范围&#xff1a; 生命周期&#xff1a; 默认开启&…

C++实战Opencv第一天——win11下配置vs,opencv环境和运行第一个c++代码(从零开始,保姆教学)

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库&#xff0c;它提供了大量的通用算法和功能&#xff0c;用于处理图像和视频数据。C 通常提供比 Python 更高的执行速度&#xff0c;对于需要高性能处理的任务&#x…

QT 文本框的绘制与复选框组键

.cpp文件 #include "widget.h" #include "ui_widget.h"#include<QDebug> Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//更改窗口标题setWindowTitle("我爱xyy");//更改图标setWindow…

使用VSCode内的jupyter编写R语言:绘制中国省份地区热力图

R语言绘制中国省份地区热力图教程 1、R语言的安装和编辑器的选择 对于一门从未接触过的编程语言&#xff0c;相信大家的吐槽点和我一样&#xff1a;又要安装软件&#xff0c;配置环境&#xff01;其实R语言的安装和环境配置并不复杂&#xff0c;只需要安装两部分内容&#xf…

IC验证——perl脚本ccode_standard——c代码寄存器配置标准化

目录 1 脚本名称 2 脚本路径 3 脚本参数说明 4 脚本操作说明 5 脚本代码 1 脚本名称 ccode_standard 2 脚本路径 /scripts/bin/ccode_standard 3 脚本参数说明 次序 参数名 说明 1 address (./rfdig&#xff1b;.&#xff1b;..&#xff1b;./boot) 指定脚本执行路…

【小笔记】用tsai库实现Rocket家族算法

2024.1.16 Rocket家族算法是用于时间序列分类的强baseline&#xff08;性能比较参考【小笔记】时序数据分类算法最新小结&#xff09;&#xff0c;Rocket/MiniRocket/MultiRocket官方都有开源实现&#xff0c;相比较而言&#xff0c;用tsai来实现有三个好处&#xff1a;1是快速…

WPF应用程序生存期以及相关事件

WPF 应用程序的生存期会通过 Application 引发的几个事件来加以标记&#xff0c;相关事件对应着应用程序何时启动、激活、停用和关闭。 应用程序生存期事件 • 独立应用程序(传统风格的 Windows 应用程序&#xff0c;这些应用程序作为要安装到客户端计算机并从客户端计算机运…

VitePress-01-从零开始的项目创建(npm版)

说明 本文介绍一下 VitePress的项目创建的步骤。 主要用到的命令工具是 npm。 本文的操作步骤是从无到有的创建一个完整的基本的【VitePress】项目。 环境准备 根据官方文档的介绍&#xff0c;截止本文发稿时&#xff0c;需要使用node.js 18 的版本。 可以使用node -v 的命令查…

关于java的封装

关于java的封装 我们在前面的文章中&#xff0c;了解到了类和对象的知识&#xff0c;以及做了创建对象的时候对内存的分析&#xff0c;我们本篇文章来了解一下面向对象的三大基本特征之一&#xff0c;封装&#x1f600;。 一、初识封装 封装就好比&#xff0c;我们把一些物品…