测试环境

apache-jmeter-2.13

 

1.   问题描述

单台机器的下JMeter启动较大线程数时可能会出现运行报错的情况,或者在运行一段时间后,JMeter每秒生成的请求数会逐步下降,直到为0,即JMeter运行变得很“卡”。

2.   解决方法

1)设置JVM内存

找到JMeter bin目录下的jmeter.bat文件,notepad等文本工具打开,编辑

找到如下内容,

rem See the unix startup file for the rationale of the following parameters,

rem including some tuning recommendations

set HEAP=-Xms512m -Xmx512m

set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m

set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%

set TENURING=-XX:MaxTenuringThreshold=2

修改带背景色,文字带颜色内容如下

set HEAP=-Xms2048m -Xmx2048m

set NEW=-XX:NewSize=640m -XX:MaxNewSize=640m

说明:

-Xms512m:初始化堆内存大小 -Xmx512m:最大堆内存大小,这里的内存大小建议为512的整数倍,可以根据机器实际内存进行合理的设置,建议最大值-Xmx不要超过剩余物理内存的50%

通常会将 -Xms  -Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源

set NEW=-XX:NewSize=640m -XX:MaxNewSize=640m

1-XX:newSize:新生代初始内存的大小,应该小于 -Xms的值

2 -XX:MaxnewSize:表示新生代可被分配的内存的最大上限;当然这个值应该小于-Xmx的值,因为新生代占内存来自整个堆内存。为了优化GC(内存垃圾回收),最好设置-XX:MaxnewSize值约等于-Xmx1/3

 

注意:jvm在执行GC时,会停止工作。MaxnewSize的增大,可以降低GC频率,

2)指定测试结果数据存储文件

如上,JMeter中很多插件都提供了结果文件存储设置,为了避免请求测试结果数据都存储到JVM内存(因常驻数据无法回收,量大的话会很快压垮jmeter),需要为插件指定一个文件,把数据存储到该文件,测试前务必要进行这类设置检查。

另外,通常结果文件要保存为CSV格式(比起xml格式,可以少写入好多数据)

3)针对某些监听器,设置仅记录错误日志

根据第二点的分析,针对某些监听器(比如查看结果树),我们只需关注错误日志信息的情况下,需要勾选“仅日志错误”,这样只会保存错误日志到内存,数据不会多。

 

4)通过保存的结果文件“重绘”测试监听结果图表

针对一些不需要在测试过程中“实时”查看的测试“监听器”图表,可以考虑“线下”生成图表。具体做法如下所例。

eg:


如上图,这里添加了监听器“聚合报告”,插件,因为我们需要查看相关数据,比如吞吐量,请求耗时等,但是我们不需要实时查看结果,所以把对监听结果“聚合报告”给禁用了(更重要的别因是聚合报告非常消耗CPU

然后,我们添加了监听器“Simple Data Writer”,并设置结果数据存放文件(例子中为“测试结果.csv”),如果有必要的话还可以点击Configure设置需要保存的条目,文件格式等(通常默认设置就可以了)

注:Simple Data Writer:该监听器可用于记录测试结果到某个文件,但不提供ui展示。

最后,等测试完成后,我们在插件控制面板中,点击浏览按钮,打开上述保存的文件,结果如下,可以看到生成的分析数据了。

注意:

1)Log/Display Only: 仅错误日志Successes

这里如果勾选了仅错误日志,那么记录数据、展示数据的时候只会记录/展示错误日志,如果勾选了Successes,则只会记录/展示成功执行的记录,两个都不勾选,则默认记录全部信息。这点针对其它插件也是如此

2)打开保存的数据文件,默认会分析数据文件中的所有内容,所以,每次执行前都应该重新命名结果文件(可以在输入框中直接输入新的文件名,或者找到存储目录下,备份结果文件后,把结果文件删了),防止每次测试的数据都写入到一个文件里,叠加统计了。这点针对其它插件也是如此

 

3)每次打开保存的结果数据文件之前,要点击工具栏的 清除、清除全部按钮,清除展示的数据,否则展示的数据会在上次的基础上叠加显示。这点针对其它插件也是如此

jmeter对自身性能的优化的更多相关文章

  1. JMeter JMeter自身运行性能优化

    JMeter自身运行性能优化   by:授客 QQ:1033553122 测试环境 apache-jmeter-2.13   1.   问题描述 单台机器的下JMeter启动较大线程数时可能会出现运行 ...

  2. fir.im Weekly - APP 性能监测优化 二三事

    每一个成功的 App,都拥有强大的性能体验.本期 fir.im Weekly 整理了微信读书.美团外卖. 天猫.美团点评技术团队的关于性能监测优化方面策略和工具的分享,一起来看看. 微信读书 iOS ...

  3. paip.提升性能---mysql 优化cpu多核以及lan性能的关系.

    paip.提升性能---mysql 优化cpu多核以及lan性能的关系. 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:/ ...

  4. php性能效率优化

    [size=5][color=Red]php性能效率优化[/color][/size] 最近在公司一边自学一边写PHP程序,由于公司对程序的运行效率要求很高,而自己又是个新手,一开始就注意程序的效率很 ...

  5. influxDB1.6版安装与配置(windows环境)、Jmeter+influxDB+Grafana性能监控

    influxDB1.6版安装与配置(windows环境).Jmeter+influxDB+Grafana性能监控 来源:https://blog.csdn.net/SwTesting/article/ ...

  6. 测试mktime和localtime_r性能及优化方法

    // 测试mktime和localtime_r性能及优化方法 // // 编译方法:g++ -g -o x x.cpp或g++ -O2 -o x x.cpp,两种编译方式性能基本相同. // // 结 ...

  7. Java性能 -- Lock优化

    Lock / synchronized Lock锁的基本操作是通过乐观锁实现的,由于Lock锁也会在阻塞时被挂起,依然属于悲观锁   synchronized Lock 实现方式 JVM层实现 Jav ...

  8. 关于jmeter+ant+jenkins性能自动化将测试结果文件jtl转换成html文件遇到的问题。

    1.ant自身缺陷,返回结果中有特殊字符,乱码字符,无法识别,jtl文件转换时报错. 2.jtl文件过大转换成html文件时出现内存溢出. 针对以上情况:可考虑使用BeenShell Sampler: ...

  9. [转帖]Java虚拟机(JVM)体系结构概述及各种性能参数优化总结

    Java虚拟机(JVM)体系结构概述及各种性能参数优化总结 2014年09月11日 23:05:27 zhongwen7710 阅读数 1437 标签: JVM调优jvm 更多 个人分类: Java知 ...

随机推荐

  1. 图像的下采样Subsampling 与 上采样 Upsampling

     I.目的 缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的: 1.使得图像符合显示区域的大小: 2.生成对应图像的缩略图. 放大图像(或称为上采样(ups ...

  2. Window 产品密钥

    2019.4.2 测试可用 window2003         DF74D-TWR86-D3F4V-M8D8J-WTT7M

  3. jQuery UI =>jquery-ui.js中sortable方法拖拽对象位置偏移问题

    今天要处理sortable方法处理的对象,拖拽的时候,位置偏移的问题. 按理应该是鼠标在哪,对象就跟着在哪的 百度了一下问题,http://blog.csdn.net/samed/article/de ...

  4. 三维计算机视觉 — 中层次视觉 — Point Pair Feature

    机器人视觉中有一项重要人物就是从场景中提取物体的位置,姿态.图像处理算法借助Deep Learning 的东风已经在图像的物体标记领域耍的飞起了.而从三维场景中提取物体还有待研究.目前已有的思路是先提 ...

  5. 排序算法--希尔排序(Shell Sort)_C#程序实现

    排序算法--希尔排序(Shell Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来非常困难 ...

  6. Android学习:代码控制UI界面示例

    package allegro.test2; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; im ...

  7. Xcode - Xcode10上传应用到AppStore

    Xcode 10 如何上传应用到AppStore?Product->Archive 后,原来Xcode 10 之前的版本是直接有两个按钮,一个upload to AppStore,另一个叫Exp ...

  8. jquery面试(2)

    DOM操作——怎样添加.移除.移动.复制.创建和查找节点? (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体 ...

  9. poj 2074

    哎怎么说,感觉现在处理平面上点线的题已经比较熟练了. 这题就离散化然后搞个前缀和就没了. 准备开始进一步的自闭了. 下面是disguss的一些样例... 其实是我自己写错了个地方,本来能1A的. #i ...

  10. java学习之路--多线程实现的方法

    1 继承Thread类 继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Th ...