Windows环境Jmeter调优

news2024/11/17 16:45:22

在windows环境下搭建jmeter的压测实验环境,需要对操作系统默认的一些个参数进行设置,以提高并发能力。特别是作为压力机的时候。

Socket 编程时,单机最多可以建立多少个 TCP 连接,受到操作系统的影响。

Windows 下单机的TCP连接数受多个参数影响:

2. Windows Jmeter端口不够用

  • 报错: jmeter Address already in use: connect
  • 原因: windows 环境下的端口环回收需要消耗2~4分钟。由此猜测可能是由于 windows下压测端口数有限,端口资源被占满,没有及时循环回收,导致报错
  • 解决办法
    • 扩大端口数量
    • 提高端口使用率
  • 优化
    • 修政注册表。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Sevices\Tcpip\Parameters 右键新建参数(DWORD),并设置值
    • 扩大端口数量
      • MaxUserPort 十进制 65534
    • 提高端口使用率
      • TcpTimedWaitDelay 十进制 30
      • KeepAliveTime 006ddd00
      • KeepAlivelnterval 000003e8
      • MaxDataRetries 5 

1. 最大TCP连接数

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters] TcpNumConnections = 0x00fffffe (Default = 16,777,214)

以上注册表信息配置单机的最大允许的TCP连接数,默认为 16M。这个数值看似很大,这个并不是限制最大连接数的唯一条件,还有其他条件会限制到TCP 连接的最大连接数。

windows7 机器最大连接数修改: 

  1.  Win+R运行regedit; 
  2.  找到HKEY_LOCAL_MACHINESYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3.  在右侧面板中找到EnableConnectionRateLimiting将值设置为0(无限制)      

2. 最大动态端口数

TCP客户端和服务器连接时,客户端必须分配一个动态端口,默认情况下这个动态端口的分配范围为 1024-5000 ,也就是说默认情况下,客户端最多可以同时发起3977 个Socket 连接。我们可以修改如下注册表来调整这个动态端口的范围

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters] MaxUserPort = 5000 (Default = 5000, Max = 65534) 

3. 最大TCB 数量

系统为每个TCP 连接分配一个TCP 控制块(TCP control block or TCB),这个控制块用于缓存TCP连接的一些参数,每个TCB需要分配 0.5 KB的pagepool 和 0.5KB 的Non-pagepool,也就说,每个TCP连接会占用 1KB 的系统内存。

系统的最大TCB数量由如下注册表设置决定

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters] MaxFreeTcbs = 2000 (Default = RAM dependent, but usual Pro = 1000, Srv=2000)

非Server版本,MaxFreeTcbs 的默认值为1000 (64M 以上物理内存)

Server 版本,这个的默认值为 2000。

也就是说,默认情况下,Server 版本最多同时可以建立并保持2000个TCP 连接。

4. 最大TCB Hash table 数量

TCB 是通过Hash table 来管理的,下面注册表设置决定了这个Hash table 的大小

HKEY_LOCAL_MACHINE \System \CurrentControlSet \services \Tcpip \Parameters] MaxHashTableSize = 512 (Default = 512, Range = 64-65536)

这个值指明分配 pagepool 内存的数量,也就是说,如果 MaxFreeTcbs = 1000 , 则 pagepool 的内存数量为 500KB

那么 MaxHashTableSize 应大于 500 才行。这个数量越大,则Hash table 的冗余度就越高,每次分配和查找 TCP 连接用时就越少。这个值必须是2的幂,且最大为 65536.

5. nginx 最大连接数设置:

1. 打开nginx配置文件  nginx.conf

设置worker_connections为64000和keepalive_timeout为60s,如下图所示

6. jmeter设置

6.1 JVM等调优

根据自己机器的配置设置如下参数,下面参数的参数值仅做参考。

配置文件在 jmeter.home/bin的jmeter及jmeter.sh文件。

设置JVM大小: bin/jmeter文件,heap大小不要超过系统内存的2/3.

  • jmeler是基于iava请求的,所以该进程需要制定特定的JVM设置
  • jmeter自身进行gc也会对结果产生影响,经常遇到负载机会出现卡死的情况,报错内存溢出

因此需要针对JVM进行调优。

  •  vi jmeter
  1. 注释掉
    1. HEAP="-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m"
    2. java $ARGS $JVM_ARGS $JMETER_OPTS -jar "$PRGDIR/ApacheJMeter.jar" "$@"
  2. 修改jmeter 运行的jvm内存, 在最后一行添加
    1. java $JVM_ARGS -Xms2G -Xmx8G -XX:MaxPermSize=512m -Dapple.laf.useScreenMenuBar=true -jar `dirname $0`/ApacheJMeter.jar "$@"
  • vi jmeter.sh
  1. 设置 JVM_ARGS="-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m"

打开jmeter.properties,查找 httpclient4.idletimeout ,将其值设置为10-60s

httpclient4.idletimeout=10000 (这里指的毫秒)

7. 界面永久修改为中文

修改jmeter.bat文件(修改后重启)

使用编辑器打开JMeter启动文件 jmeter.bat
        将
            set JMETER_LANGUAGE=-Duser.language="en" -Duser.region="EN"
        修改成
            set JMETER_LANGUAGE=-Duser.language="zh" -Duser.region="CN"
        保存代码

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

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

相关文章

simulink while/if/switch case

目录 while if Switch case while 循环设置100次 if Switch case 子模块可以用法和if一样

vue3混入mixins

Vue中混入的作用是分发组建中可复用的功能 新建mixins文件夹,新建mixins.ts文件 import { ref } from vue;export default function () {const num ref(0);const fav ref(false);const fvbtn () > {num.value 1;fav.value true;setTimeout(() > {fav.va…

六西格玛在服务业的案例:如何通过过程改进提高客户满意度?

六西格玛是一种质量管理方法,旨在通过减少缺陷和提高效率用以改善业务流程。在服务行业,六西格玛可以帮助企业提高客户满意度,缩短服务周期,降低成本。下面张驰咨询给大家分享一个服务行业的六西格玛案例。 1、背景介绍 这家服务…

Docker学习笔记26

Docker stack应用: 1)Docker 层级关系中的最高层次——stack,一个stack就是一组有关联的服务的组合,可以一起编排,一起管理。 早期,使用service来发布服务。但是service每次只能发布一个service。 yaml可…

(Windows版)PostgreSQL - TimescaleDB插件的2种安装方法

一:下载pgsql相对应的timescaledb插件包 下载地址:https://github.com/timescale/timescaledb/releases/tag/2.10.1 二:开始安装 注意:在安装前,先关闭PostgreSQL 服务 方法一 1.【控制面板\系统和安全\管理工具\…

手把手教-单片机和w5500模块基于rt-thread中wiznet软件包的使用

一、开发环境 硬件:stm32f407野火开发板,w5500模块 软件:rt-thread操作系统,wiznet软件包,基于正点原子stm32f407的bsp包(需要根据实际修改系统时钟) 引脚连接方式: 单片机引脚&…

镀金积分球——激光红外功率测量

中波红外激光作为干扰光源,可对红外导引头及红外观瞄设备实施压制式干扰,激光器远场功率密度分布是评价其作战效能的重要指标。通用的激光功率测量设备多基于近场,并且因接收口径有限,只能检测到很小特定区域内的激光功率&#xf…

专心当个工程师,也挺好~

正文 大家好,我是bug菌~ 今天主要是分享一些职场上的小小领悟吧: 1 双向思维 一个人有他的缺点,也必定存在其优点,不要动不动就局限的认为这个人这也不行,那也不行,再说当初你咋就把他招进来了呢&#xff1…

【Redis 】Redis 的脑裂现象和解决方案

文章目录 Redis 中的脑裂是什么?脑裂有什么影响?数据丢失一定是发生了脑裂吗?如何解决脑裂问题? Redis 中的脑裂是什么? 从名字分析,脑裂现象就是大脑裂开了,一个人如果有两个大脑,…

Golang每日一练(leetDay0116) 路径交叉、回文对

目录 335. 路径交叉 Self-crossing 🌟🌟🌟 336. 回文对 Palindrome Pairs 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/…

【PCIE】链路训练的TS训练序列解释

TS码流解释 TS1和TS2有序集合是PCIe(Peripheral Component Interconnect Express)协议中使用的一种特殊数据包格式。这些有序集合用于在PCIe链路的训练阶段进行通信和控制。 TS1(Training Sequence 1)有序集合:TS1有…

Django实现简单的音乐播放器 2

在《Django实现简单的音乐播放器 1》前期准备的基础上开始开发。 效果: 目录 项目视图 创建视图方法 路由加载视图 加载模板 创建首页html文件 加载静态资源文件 加载静态文件 使用方法 启动服务器 加载数据表 创建表模型 生成表迁移 执行创建表 插入…

CRM中的多业务场景管理是什么?有哪些功能?

为了适应不同的客户需求和市场变化,很多企业开展了多个业务场景(产品线、销售渠道等)。这些多业务场景给企业的客户管理带来了很大的挑战,如何有效地管理多种业务是企业急需解决的问题。下面说说,多业务场景下的CRM管理…

在Window仿Linux终端命令学习Python

在Window仿Linux终端命令学习Python Echox 命令 -- 主要带颜色输出ls 命令findx 命令~~待续~~ python3 Echox 命令 – 主要带颜色输出 查看 python输出颜色(终端控制台) ls 命令 1、getopt 模块参数解析 : Python 命令行参数 2、os.getcwd…

怎么免费视频压缩器?这 9 个最佳免费视频压缩器教你轻松学会!

视频有多种格式、不同的大小和不同的压缩级别。但是,您可以使用最好的视频压缩器来: 减小文件大小提高压缩质量更好地服务您的观众 我们将列出九个领先的视频压缩软件精选,您今天可以免费使用它们来增强您的视频。 9 个顶级免费视频压缩软件…

7 字符和字符串的“+”操作

7.1 字符的“”操作 char类型的数据参与加法运算。如下: char a A; int b 10 ; int c a b ; System.out.println(c); 结果如下: 接收结果使用的是int数据类型,按照相加时哪个数据类型大,结果就是哪个数据类型的规则&#xff…

CMake 使用教程 (四)

1.0 日志 在 CMake 中可以用用户显示一条消息,该命令的名字为 message: message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...)(无) :重要消息STATUS :非重要消息WARNING&#…

51从零开始学Java之详解Java中的包装类

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在上一篇文章中,壹哥给大家介绍了Java中的Object类,它属于我们开发时的常用类…

2023(WAIC)智能驾驶科技峰会丨拓数派大模型下的数据计算系统,助力汽车智能化产业数据增值

2023 智能驾驶科技峰会在上海圆满落幕,本次大会由世界人工智能大会(WAIC)组委会办公室指导,浦东新区人民政府支持,浦东新区科技和经济委员会、中国 (上海)自由贸易试验区管理委员会金桥管理局主…

【SAP-ABAP】RPR_ABAP_SOURCE_SCAN 搜索带特定字符串的程序

昨日问了懒神,才知道还有这功能,真好用 业务背景:需要查找系统中有哪些程序带了特定的字符串(一般类似于某些条件写死了) 程序:RPR_ABAP_SOURCE_SCAN 程序:RS_ABAP_SOURCE_SCAN SE38执行程序…