Windows环境Jmeter调优

在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.hqwc.cn/news/14682.html

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

相关文章

TL-ER2260T获取SSH密码并登录后台

TL-ER2260T获取SSH密码并登录后台 首先需要打开诊断模式 打开Ubuntu,通过如下指令计算SSH密码,XX-XX-XX-XX-XX-XX是MAC地址echo -n "XX-XX-XX-XX-XX-XX" | tr -d - | tr [a-z] [A-Z] | md5sum | cut -b 1-16SSH登录ssh -oKexAlgorithmsdiffie…

haproxy负载均衡

目录 一.常见的web集群调度器 二.haproxy的概念 三.特性 四 图解haproxy 五 haproxy的配置文件详解 一.常见的web集群调度器 1.目前常见的web集群调度器分为软件和硬件 2.软件通常使用开源的lvs/haproxy/nginx 3.硬件一般使用比较多的是f5 也有国内的产品 二.haproxy的…

小机器人在现实世界中学会快速驾驶

小机器人在现实世界中学会快速驾驶 —强化学习加上预训练让机器人赛车手加速前进— Without a lifetime of experience to build on like humans have (and totally take for granted), robots that want to learn a new skill often have to start from scratch. Reinforceme…

系统吞吐量(TPS)、用户并发量、性能测试概念和公式

目录 PS:下面是性能测试的主要概念和计算公式,记录下: 一.系统吞度量要素: 二.系统吞吐量评估: 软件性能测试的基本概念和计算公式 一、软件性能的关注点 二、软件性能的几个主要术语 PS&…

hive数据的导入导出

一、hive 的数据导入 Linux本地文件以及数据格式: 在hive中创建表: create table t_user( id int ,name string ) row format delimited fields terminated by "," lines terminated by \n stored as textfile;stored as常见的几种格式 1.…

使用wordpress搭建WebStack导航网站记录

0 序言 首先,我来介绍下,这个webstack导航网站实际上是被做成了wordpress的一个主题,具体这个主题的下载地址如下: WordPress 版 WebStack 导航主题https://github.com/owen0o0/WebStack 我们不需要使用git clone命令&…

回归预测 | MATLAB实现CNN-BiGRU-Attention多输入单输出回归预测

回归预测 | MATLAB实现CNN-BiGRU-Attention多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-BiGRU-Attention多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-BiGRU-Attention多输入单输出回归预测,CNN-GRU结合…

机器人轨迹生成:轨迹规划与路径规划

机器人轨迹生成涉及到轨迹规划和路径规划两个关键概念,它们是机器人运动控制中的重要组成部分。下面对轨迹规划和路径规划进行深入比较。 轨迹规划(Trajectory Planning): 定义:轨迹规划是指在机器人运动中确定机器人末…

Linux 文件属性

ubuntu命令行下输入以下命令: ls- al第一个字符表示“文件类型”,它是目录、文件或链接文件等。 文件类型后面的 9 个字符以 3 个为一组,第一组表示“文件所有者的权限”;第二组表示“用户组的权限”;第三组表示“其…

【Azure】解析 Microsoft Defender for Cloud:云安全的保护与管理

你在使用自己的电脑的时候,作为安全防护你可能直接装个杀毒软件,或者什么xx管家之类的,那么你是否有想过,如果我有一套云服务之后,我应该如何进行安全防护呢?本文带你了解在 Azure 云中的安全防护体系&…

Portraiture最新PS/LR 4.1.0.3皮肤修饰插件

Portraiture是一款惹人喜爱的PS磨皮插件。它能智能地对图像中的皮肤材质、头发、眉毛、睫毛等部位进行平滑和减少疵点处理,相对于Camera RAW,它能选择肌肤的色彩范围,对选择的部分进行单独处理。这样避免了其他部分同时被美化。 Portraiture…

SIFT(尺度不变特征变换)

Sift(尺度不变特征变换),全称是Scale Invariant Feature Transform Sift提取图像的局部特征,在尺度空间寻找极值点,并提取出其位置、尺度、方向信息。 Sfit的应用范围包括物体辨别、机器人地图感知与导航、影像拼接、…