测试环境

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. Java线程生命周期

    当你需要使用Java线程在多线程环境下进行编程时,理解Java的线程周期与线程的状态是非常重要的.通过实现Runnale接口或者继承Thread类,我们可以创建线程,为了启动一个线程,我们需要创建一个 ...

  2. Ubuntu下pdf和图片互转

    前边文章可以将ppt转换为pdf  查看 使用unoconv将ppt转为pdf,再使用imagemagick将pdf转为图片 这次想将pdf和图片进行互转 当前目录下只有2.ppt 1.ppt转pdf ...

  3. Qt自定义控件大全+designer源码

    抽空将自定义控件的主界面全部重写了一遍,采用左侧树状节点导航,看起来更精美高大上一点,后期准备单独做个工具专用每个控件的属性设计,其实qt自带的designer就具备这些功能,于是从qt4的源码中抽取 ...

  4. React 性能调优总结

    React 性能调优总结 首先要说一个库: why-did-you-update, 地址:why-did-you-update, 利用这个库可以在页面上快速看到多余渲染的问题: 因为多数情况下我们在R ...

  5. Oracle同义词(synonym)

    oracle的同义词总结   从字面上理解就是别名的意思,和视图的功能类似.就是一种映射关系.   同义词拥有如下好处:   节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;   扩展的数 ...

  6. 8、路由 router

    路由:router 用户功能 /user ----> index.html /user/login ----> login.html /user/reg ----> reg.html ...

  7. C语言函数strstr

    函数原型: extern char *strstr(char *str1, const char *str2);   语法: * strstr(str1,str2)   参数: str1: 被查找目标 ...

  8. ThinkPHP 缓存技术详解 使用大S方法

    如果没有缓存的网站是百万级或者千万级的访问量,会给数据库或者服务器造成很大的压力,通过缓存,大幅减少服务器和数据库的负荷,假如我们把读取数据的过程分为三个层,第一个是访问层,第一个是缓存层,第三个是数 ...

  9. JavaScript基础知识(数据类型)

    数据类型 布尔:true/fasle console.log(typeof true);// "boolean" Number : true -->1 false --> ...

  10. 基于bootstrap-treeview做的一个漂亮的无限分类树层级联动菜单

    2017年12月11日09:59:15 因为工作需要把原来的bootstrap-treeview做了一些小改动,方便后台开发人员使用 最终效果,看起来还行,但是其实不是特别友好对用户来说,但是对开发者 ...