JMeter-性能测试

参考文档:https://jmeter.apache.org/usermanual/boss.html

一、问题

1、预计的平均用户数是多少(正常负载)?

2、预计的高峰用户数是多少?

3、考虑到这负载测试可能会使一台或多台服务器崩溃,什么时候是对我们的应用程序进行负载测试的好时间(下班时间或周末)?

4、应用程序有状态吗? 如果有,那应用程序如何管理状态的呢(用的cookie,会话重写还是其他方法)?

5、要达到的测试目的是什么?

二、资源

1、网络 :谁知道我们的网络拓扑情况? 如果遇到任何防火墙或代理问题,找谁帮忙解决。 如果能有一个专用测试网络(具有非常低的网络延迟)将是一件非常好的事情, 知道谁可以为您设置这将非常有用。 如果应用程序无法按预期扩展,谁可以帮忙添加其他硬件?

2、应用程序:谁知道我们要测试的应用程序是如何运行的? 正常测试顺序是:

  小批量测试(我们可以对我们的应用进行基准测试吗?)
  基准测试(平均用户数)
  负载测试(最大用户数)
  破坏性测试(我们的硬性限制是什么?)
  测试过程可能会从黑盒测试发展到白盒测试(不同之处在于第一个不需要应用程序知识[被视为“黑盒子”],而第二个则需要应用程序的知识)。 在此过程中可能会发现应用程序的很多问题,因此请做好保护工作的准备。

三、平台

应该使用哪个平台来运行基准测试/负载测试?

该平台应该是一种广泛使用的硬件,并安装标准软件。请记住,如果您发布测试结果,则客户要做的第一件事就是雇用一名专业的人员对其进行验证。您最好尽可能地简化此人的工作。

对于Windows而言,Windows XP Professional系统已是最低要求了(其他系统的线程不能并发50-60个连接)

好的免费平台包括linux,BSD和Solaris Intel。如果您有更多钱,可以使用商业化的Linux。

对于非Windows平台,请用“ ulimit -n unlimited”来将每个进程可打开的文件数设置为不限制,并将该命令包括在用户帐户启动脚本(测试帐户的.bashrc或.cshrc脚本)中。

另请注意,某些Linux / Unix版本仅供服务器使用。这些通常很少或根本没有GUI支持,这样的操作系统应该可以在CLI模式下运行JMeter,但如果安装了最小的GUI环境,应可以在GUI模式运行JMeter。

随着进行大规模基准测试/负载测试,平台本身将成为限制因素。因此,有条件就用最好的硬件和软件。切记在发布的基准测试中应包括硬件/软件配置信息。

当您需要大量机器或想要测试网络延迟时,云可以为您提供帮助。 JMeter可以在云中几乎任何可用的架构上运行,因此可以轻松地安装在云实例上。如果您不想自己管理JMeter,则在Commercial Cloud PAAS中也支持JMeter。

不要忘记JMeter批处理(CLI)模式。出于以下几种原因,应在负载测试期间使用此模式:

  如果您具有支持Java的功能强大的服务器,但可能没有快速的图形实现,或者您需要在远程登录。
  与使用远程显示或客户端-服务器模式相比,批处理(CLI)模式可以减少网络流量。
  用于GUI模式的Java AWT线程有时会通过阻止来更改注入行为

可以将批处理日志文件加载到工作站上的JMeter中进行分析,或者可以使用CSV输出并将数据导入电子表格中。

请记住,GUI模式用于脚本创建和调试,而不用于负载测试

四、工具

ping   这可以用来确定您是否可以到达目标站点。 可以指定选项,以便“ ping”提供与“ traceroute”相同的路由报告类型。

nslookup/dig   尽管用户通常会使用人类可读的Internet地址,但是您可能希望避免在执行基准测试/负载测试时避免DNS查找的开销。 这个工具可用于确定目标站点的唯一地址。

traceroute   如果您无法“ ping”目标站点,则可以使用它来确定问题(可能是防火墙或代理)。 它也可以用于估计总体网络延迟(在本地运行应提供尽可能低的网络延迟-请记住,您的用户将在可能繁忙的Internet上运行)。 通常,跳数越少越好。

五、如何增强JMeter?

有很多开源和商业提供商提供JMeter插件或其他资源以供JMeter使用。 其中一些列在JMeter Wiki上。 它们分为以下几类:

JMeterPlugins -扩展的JMeter插件

JMeterAddons -与JMeter一起使用的插件 ,浏览器,Maven和Jenkins的插件。

JMeterServices -第三方服务,例如 基于云的JMeter

请注意,这些在Wiki上的出现并不意味着任何Apache JMeter项目都认可。 任何支持请求都应直接联系相关的供应商。

六、为什么是Java?

为什么是java,而不是Perl或C? Perl可能是一个很好的选择,但除了Benchmark软件包似乎其他只给出了相当模糊的结果。而且,用Perl模拟多个用户是一个棘手的问题(可以通过从Shell脚本派生许多进程来模拟多个连接,但是这些不是线程,而是进程)。Perl社区大

如果您发现有人已经写了一些有用的东西,这可能是一个很好的解决方案。当然,C也是一个很好的选择(请查看Apache ab工具)。但是要编写所有基准测试应用程序所需的自定义网络,线程和状态管理代码。

Java为您免费提供了基准测试应用程序所需的自定义网络,线程和状态管理代码。 Java知道HTTP,FTP和HTTPS-以及RMI,IIOP和JDBC(更不用说cookie,URL编码和URL重写)。此外,Java为您提供了自动垃圾收集和字节码级别的安全性。

JMeter-做性能测试从何开始的更多相关文章

  1. 使用Jmeter做性能测试

    上周刚刚做完项目的性能测试.今天整理和总结一下,随便分享给大家. 首页呢,测试前,我们是有明确的性能指标的,而且测试环境和数据都已准备好,业务分析.场景分析大家根据自己的项目系统进行分析设计,我们选用 ...

  2. 【转】使用JMeter做性能测试的心得

    企业应用开发过程中,性能测试是很重要的一个环节,在这个环节中Apache的JMeter以它开源.100%纯Java.操作方便等优点发挥着很大的作用. 经过一段时间的使用,多少有些心得和技巧,拿出来共享 ...

  3. Linux下使用Jmeter做性能测试

    一.安装Jmeter 1.上传Jmeter压缩包到Linux服务器,如:/opt目录下 2.解压缩 unzip apache-jmeter-3.1.zip 3.配置环境变量:vi /etc/profi ...

  4. 用Jmeter做性能测试,之后报表展示

    https://octoperf.com/blog/2017/10/19/how-to-analyze-jmeter-results/ 看到性能测试平台的开发,我在想需要什么功能,报表需要什么样子的 ...

  5. Jmeter工具做性能测试 常见的错误汇总

    在Win机器上用Jmeter做性能测试,汇总下我自身遇到的错误和解决方案 java.net.BindException: Address already in use: JVM_Bind 原因分析:压 ...

  6. jmeter如何玩之badboy + jmeter并发性能测试

    今天下班时公司安排了一个同事来对项目做集群性能测试,怀着对性能测试的好奇心,下班后没有着急离开,而是等待 那位同事的到来,然后在旁边学习了下如何使用Badboy和jmeter做性能测试. 1. 软件介 ...

  7. Jmeter初步使用二--使用jmeter做一个简单的性能测试

    经过上一次的初步使用,我们懂得了Jmeter的安装与初步使用的方法.现在,我们使用Jmeter做一个简单的性能测试.该次测试,提交的参数不做参数化处理,Jmeter各元件使用将在介绍在下一博文开始介绍 ...

  8. 如何使用jmeter做一个功能的性能测试

    一.为什么又再次写类似的文章? 在博客园和公号写文章,已经快两年了,所以自然在公号和博客园都能联系到我的. 也就是几天前,有个人加我微信,对于总有人加我好友,我已经觉得不奇怪了,为什么呢? 加我好友的 ...

  9. 一个使用Jmeter做接口性能测试的实战案例

    1 安装并配置Jmeter Jmeter的安装不在这里阐述,安装步骤非常简单. 直接进入主题 1.1 数据库连接配置 由于测试过程需要调用数据库获取响应部署数据,因此需要先建立与数据库的连接. 如果不 ...

  10. 【Jmeter】Linux(Mac)上使用最新版本Jmeter(5.0)做性能测试

    本文我们一起来学习在Linux(Mac)上利用Jmeter进行性能测试并生成测试报告的方法. 环境准备 JDK 访问这个地址 [JDK11.01],根据实际环境下载一个JDK. Jmeter Jmet ...

随机推荐

  1. 深入分析Java反射(三)-泛型

    前提 Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行 ...

  2. Codeforces 1188B Count Pairs (同余+分离变量)

    题意: 给一个3e5的数组,求(i,j)对数,使得$(a_i+a_j)(a_i^2+a_j^2)\equiv k\ mod\ p$ 思路: 化简$(a_i^4-a_j^4)\equiv k(a_i-a ...

  3. RocketChat:开源聊天软件部署

    1. 简介 RocketChat是一款优秀的开源聊天软件.支持各种平台,IOS.Android.Web.Mac.Windows以及Linux,安装部署简单,功能简单易用,目前部分功能还在完善当中,特别 ...

  4. 微信小程序开发技巧总结(二) -- 文件的选取、移动、上传和下载

    微信小程序开发技巧总结(二) -- 文件的选取.移动.上传和下载 1.不同类型文件的选取 1.1 常用的图片 视频 对于大部分开发者来说,需要上传的文件形式主要为图片,微信为此提供了接口. wx.ch ...

  5. Mysql的基本查询语句

    聚集函数 mysql有5个聚集函数,分别是AVG,MAX,MIN,SUM,COUNT. 分组 分组的使用group by作为关键字,having作为条件关键字. having和where的区别:1.w ...

  6. 【题解】删数问题(Noip1994)

    题目 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 11506 通过数: 3852 [题目描述] 输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序组成一个新 ...

  7. sqlserver附加数据库时出错。有关详细信息,请单击“消息”列中的超链接

    在SqlServer中附加数据库时,有时会发生下面的错误. 解决 :可能的问题是放置附加数据库的文件夹的权限问题.如下解决.点击放置附加数据库的文件夹-->右键-->属性 权限要设置为完全 ...

  8. spring cloud微服务快速教程之(七) Spring Cloud Alibaba--nacos(一)、服务注册发现

    0.前言 什么是Spring Cloud Alibaba? Spring Cloud Alibaba 是阿里开源的,致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便 ...

  9. docker部署带mysql数据库连接的.netcore程序

    docker部署带mysql数据库连接的程序和部署普通的程序完全一致 数据库可以是物理机删的mysql,同时也可以是docker里的mysql. 如果是docker中的mysql,配置连接字符串和物理 ...

  10. python函数定义中引用外部变量的一个问题

    如果在函数定义的默认值中引用了一个外部变量,如下所示 x = 3 def func(a = x): print(a, x) 那么a的默认值就会是3, 但是print语句中的x会是调用时的x值 lamb ...