如何在Web服务器中利用Apache JMeter执行负载测试

如何使用 JMeter 进行性能和负载测试? 性能测试是软件测试的一个重要部分,它的主要目的是确定和评价系统性能的一些重要参数,例如响应时间、吞吐量、资源利用率和可扩展性。以下是进行性能测试的一些主要原因:确定性能基准: 通过性能测试,可以确定系统在特定条件下的性能基准。验证系统性能要求: 性能测试可以帮助确定系统是否满足预定的性能要求。找出瓶颈: 通过性能测试,可以找出系统的瓶颈,如是否存在CPU过载、I/O问题、网络瓶颈或者内存限制。确保系统性能满足用户预期: 通过性能测试,可以确保系统在负载增加的情况下仍然能够提供满足用户预期的服务。 阅读详情

提供:ZStack云计算

系列教程

本教程为利用Apache JMeter实现负载测试系列两篇中的第一篇。

内容简介

在本教程中,我们将了解如何利用Apache JMeter在Web应用环境下执行基本的负载与压力测试。我们还将探讨如何利用其图形用户界面构建测试规划并针对Web服务器运行测试。

JMeter是一款开源桌面Java应用,旨在进行负载测试与性能评估。其可用于模拟多种场景下的负载情况并以各类方式输出性能数据,包括CSV与XML文件以及图形等。由于其属于纯Java应用,因此适用于任何支持Java 6及更高版本的操作系统。

先决条件

为了完成本教程,大家需要拥有一台运行有JMeter的计算机,一台作为测试目标的Web服务器。除非大家确信其能够处理负载,否则千万不要直接针对生产服务器进行压力测试,这可能影响到服务器性能。

本示例中使用的测试目标服务器为1 CPU/ 512 MB内存VPS,在LEMP堆栈之上运行有WordPress,且来自NYC2 DigitalOcean数据中心。JMeter计算机则运行在DigitalOcean NYC办公室当中(旨在降低测试延迟)。

请注意,JMeter的测试结果取决于多种因素,包括可用系统资源(CPU与内存)以及JMeter与Web服务器间网络等。如果使用非图形模式或者将由多台JMeter服务器同时生成负载,则可实现更高的负载压力。

安装JMeter

由于我们使用的是Apache JMeter的桌面应用,因此可适合多种桌面操作系统。这里我们不会详尽说明JMeter在不同系统上的具体安装方式。总而言之,其安装非常简单,特别是使用软件包管理器(例如apt-get或者Homebrew)或者下载并解压JMeter二进制文件这两种方式。

以下为运行JMeter所需要的软件清单:

根据Java的具体安装方式,大家可能需要向PATHenvironmental变更中添加Java bin目录,这样JMeter才能找到Java及其密钥工具二进制文件。

另外,我们还需要将JMeter的安装路径以¥JMETER_HOME的形式进行引用。因此,如果大家使用Linux或者Unix类系统,那么JMeter二进制文件将位于 JMETERHOME/bin/jmeter。如果是在Windows上,则可运行 JMETER_HOME/bin/jmeter.bat。

作为参考,我们使用以下软件版本:

  • Oracle Java 7 update 60, 64-bit
  • JMeter 2.11

JMeter安装完成并开始运行后,下面进入今天的正题!

构建一套基础测试规划

JMeter启动后,大家会看到图形用户界面中提供的空白Test Plan:

所谓测试规划,由一系列测试组件所构成,用于确定负载测试如何模拟并进行。下面我们来解释各组件的具体使用方式。

添加Thread Group

首先向Test Plan中添加一个Thread Group:

  1. 右键点击 Test Plan
  2. 鼠标悬停于Add >上方
  3. 鼠标悬停于Threads (Users) >上方
  4. 点击Thread Group

Thread Group拥有三大能够影响负载测试的重要属性:

  • Number of Threads (users): JMeter将尝试模拟的用户数量。这里将其设置为50。
  • Ramp-Up Period (in seconds): JMeter自分配线程开始的持续时长。将其设置为10。
  • Loop Count: 测试的执行次数。这里将其设置为1。
添加HTTP Request Defaults

HTTP Request Defaults配置元素用于设置测试规划之内的HTTP请求默认值,其能够帮助我们向测试中的同一服务器发送多条HTTP请求。现在让我们将HTTP Request Defaults添加至Thread Group当中:

  1. 选定Thread Group并右键点击
  2. 鼠标悬停于Add >之上
  3. 鼠标悬停于Config Element >之上
  4. 点击HTTP Request Defaults

在HTTP Request Defaults当中的Web Server部分中,利用测试目标服务器的实际名称或IP地址填写Server Name or IP字段。在此Thread Group中的其余条目中,将该服务器同样设置为默认服务器。

如果大家的Web服务器使用cookies,则可通过向Thread Group中添加HTTP Cookie Manager实现cookies支持能力:

  1. 选定Thread Group后右键点击
  2. 鼠标悬停于Add >之上
  3. 鼠标悬停于Config Element >之上
  4. 点击HTTP Cookie Manager
添加HTTP Request Sampler

现在我们需要向Thread Group添加一个HTTP Request示例,其代表着每一线程(用户)将进行访问的页面请求:

  1. 选定Thread Group并右键点击
  2. 鼠标悬停于Add >
  3. 鼠标悬停于Sampler >
  4. 点击HTTP Request

在HTTP Request中的HTTP Request部分,根据各线程(用户)的请求指向填写Path。我们将其设为/,这样每个线程就能够访问服务器主页了。请注意,我们不需要在这里指定服务器本身,因为其已经在HTTP Request Defaults条目中指定完成。

注意:如果大家希望在测试中添加更多HTTP Request,可重复这一步骤。每个线程都会执行测试规划内的全部请求。

在Table监听器中添加查看结果

在JMeter中,监听器用于输出负载测试结果。其提供多种可用监听器类型,我们亦可安装插件以加入更多监听器。在这里我们使用Table,因为其形式更易于阅读。

  1. 选定Thread Group后右键点击
  2. 鼠标悬停于Add >
  3. 鼠标悬停于Listener >
  4. 点击View Results in Table

大家可能还需要为Filename输出一个值,以将结果输出至CSV文件。

运行基础测试规划

现在我们的基础测试规划已经设置完成,接下来运行并查看其结果。

首先点击File而后Save以存储测试规划,接下来指定需要的文件名称。而后在左侧窗格内选定View Results in Table,点击主菜单中的Run,然后点击 Start(或者直接点击主菜单下方的绿色Start箭头)。大家看到的结果应如下所示:

解释结果

大家可能看到全部请求的Status都为“Success”(以绿色三角形代表且包含复选标记)。在此之后,我们需要关注其中的Sample Time (ms)与Latency(示例截屏中并未出现)两列。

  • Latency: JMeter发出请求与接收响应之间所间隔的毫秒数
  • Sample Time: 服务器完成请求的整体毫秒时耗(响应加延迟)

根据生成的表格,Sample Time区间为128到164 ms。作为基础主页(55 KB大小),这一水平基本合理。如果大家的Web应用服务器资源比较充裕,那么Sample Time结果将主要受到地理距离以及请求大小的影响(分别影响延迟水平与传输时间)。各位的实际结果可能与本示例不同。

因此,我们的服务器顺利完成了10秒之内55 KB WordPres主页的50位用户并发访问模拟(相当于每秒5次)。下面来看增加线程数量后结果会有怎样的变化。

提升负载

下面我们试试在10秒钟内设置80个线程。在左侧窗格中的Thread Group内将Number of Threads (users)调整为80,而后点击View Results in Table与Start。示例结果如下所示:

可以看到,示例时间增加了近1秒,这意味着我们的Web应用服务器已经无法应对如此规模的请求。现在登录VPS并查看资源使用情况。

通过SSH登录Web服务器并运行top:

top

除非这时仍有用户在访问该服务器,否则其Cpu(s) % user usage(us)应该很低或者为0%,而Cpu(s)% idle(id)应为99%以上,如下所示:

现在在JMeter中再次进行测试,而后切换回Web服务器的SSH会话。大家应该看到资源使用量的增加情况:

在本示例中,CPU % user usage为94%,而system usage (sy)则为4.7%,idle为0%。我们的内存仍然够用,因此性能降低主要源自CPU计算资源不足!我们也可以看到负责支持WordPress的php5-fpm进程,其使用了大部分CPU资源(约总体占用量的96%)。

为了满足10秒内80用户模拟场景的资源需求,我们需要增加CPU容量或者优化服务器设置。在WordPress中,我们可以将MySQL数据库(其为CPU使用主力)移动至其它服务器并采用缓存机制(能够降低CPU使用量)。

如果大家感兴趣,也可以进一步调整线程数量,了解服务器在遭遇性能下滑前的最高可处理负载强度。在我们的1 CPU droplet示例中,其最高线程容量为10秒内72个。

总结

JMeter是一套极具价值的工具,能够帮助我们了解Web应用服务器的改进空间,从而降低瓶颈并提升性能。现在大家已经了解了JMeter的基本使用方式,接下来请随意设置场景以进一步摸索其功能。

我们在示例中使用的测试方式并不能准确反应普通用户的使用模式,但JMeter提供多种工具以执行极具现实意义的环境测试任务。例如,JMeter能够通过配置模拟单一用户登录应用、客户端缓存以及利用URL重写处理用户会话的场景。其中还包括其它多种采样器、监听器以及配置工具,旨在帮助大家建立自己需要的场景。另外,我们也可以从http://jmeter-plugins.org/处下载更多插件以增加其功能。

本文来源自DigitalOcean Community。英文原文:How To Use Apache JMeter To Perform Load Testing on a Web Server By Mitchell Anicas

翻译:diradw

利用Jmeter工具对服务器,数据库进行性能监控,压测,导出性能测试报告 Jmeter是Apache基金会的一款免费,开源,轻量级的性能测试工具,主要针对web应用程序客户端/服务器进行性能测试.它可以分别测试静态、动态资源(Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等),它还可以通过线程组来模拟数个用户,在一定时间内同时登录服务器,数个用户并发对数据库进行访问,从而测试出服务器,数据库在一定负载情况下的性能状况. 1. 由于Jmeter是基于Java语言开发的,所以它的运行依赖于Jre环境,在运行之前首先下载jdk(最好下载 阅读详情

相关推荐

使用 Apache JMeter工具进行性能测试

使用 Apache JMeter™工具进行性能测试 一、性能测试的定义。 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,...

IT之旅 的博客 6033

如何使用JMeter进行性能和负载测试

性能测试对于确定目标Web应用程序是否能够满足高负载要求至关重要,性能测试可用于分析高负载下的目标应用的性能。 Apache Jmeter开源测试工具在性能测试中具有以下优势: JMeter可用于测试静态资源(例如JavaScript和HTML)以及动态资源(例如JSP,Servlet和AJAX)的性能; JMeter可测试目标网站可容忍处理的最大并发用户数; JMeter提供了各种性能报...

逗点云 6087

Apache JMeter软件的安装与使用(详细)

Apache JMeter软件的安装与使用一、JMeter的简介二、JMeter的作用三、与LoadRunner的异同四、JMeter的安装与配置五、JMeter插件的安装(可忽略)六、JMeter的简单使用七、JMeter+badbody录制脚本进行web并发测试 一、JMeter的简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被...

weixin_44464726的博客 8604

使用JMeter 对 WEB 进行应用性能测试

JMeter 是 Apache 的著名的开源工具,常用来做性能测试和接口测试。本篇介绍如何使用 JMeter 进行 Web 应用的性能测试。包括搭建性能测试框架,设计性能测试场景、验证 Web 应用返回结果的正确性,以及 JMeter 脚本调试和形成测试报告。 使用JMeter 对 WEB 进行应用性能测试 创建测试计划 管理组件 测试计划中管理组件包括 HTTP Header Man...

AI 教你脱发代码,背锅指南,卷王沉默,摸鱼流泪! 1634

利用jmeter进行dubbo rpc接口的性能测试

JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整...

wlmvp的博客 5672

零成本Web性能测试实战指南-利用Apache+JMeter

Apache JMeter是一个开源的性能测试工具,专为测试Web应用程序的性能和测量软件性能而设计。它最初由Stefano Mazzocchi于1998年创建,并被Apache软件基金会所采纳。作为功能强大的工具,JMeter可以模拟高并发用户负载,测试静态和动态资源,以及执行各种类型的测试,包括但不限于负载测试、压力测试、稳定性测试等。性能测试是确保软件质量和用户体验的关键过程,它涉及到一系列测试技术来评估系统的响应时间、稳定性、资源消耗、吞吐量和可扩展性。

weixin_42581003的博客 939

利用JMeter进行Web测试(简介适合初学者)

http://www.blogjava.net/qileilove/archive/2012/04/09/373628.html 利用JMeter进行Web测试 JMeter介绍 脚本录制 运行JMeter进行测试 JMeter主要组件介绍 参数化设置 动态数据关联 使用命令行运行JMeter脚本 利用XSLT分析JMeter结果文件 JMeter介绍 JMe

nashviller的专栏 3584

ROS1集群通信的可靠升级方案:为什么在无线环境下我选择了swarm_ros_bridge而非原生DDS

本文探讨了ROS1集群通信在无线环境下的可靠升级方案,重点分析了swarm_ros_bridge相较于原生DDS的优势。通过实际案例和性能对比,展示了ZeroMQ在无线通信中的稳定性和高效性,特别适合无人机编队和移动机器人集群等场景。

weixin_42567279的博客 387

用jmeter做一个简单的web性能测试

下面用jmeter演示一个简单的性能测试计划,让初学者快速上手。 下面直接上步骤: (1)打开jmeter,右击测试计划——添加线程——添加线程组,线程数为5(即5个用户) (2)导出数据接口会校验用户登录状态,可以添加http cookie管理器 -——先登录系统,然后获取cookie信息 ——右键添加http cookie管理器,将在系统查看的cookie信息粘贴到jmeter (3)添加要测试的http请求,填写请求的路径,请求参数等信息

sinat_23377479的博客 3459

DAP-Link DIY复刻指南

DAP-Link是ARM开源的一个项目,主要用于代码下载以及调试,支持SWD和JTAG调试接口,对于开发嵌入式的同学相信都或多或少有所耳闻。除了DAP-Link之外还有很多同类型的调试器,如ST-LinkJ-Link,但是这些都是不开源的,无法复刻或进行二次开发。但DAP-Link不同,完全开源,不用担心侵权问题,且随着开源社区大家的共同努力,DAP-Link经过了不断的迭代,先如今已取代ARM之前推出的CMSIS-DAP开源项目。

爱出名的狗腿子 1万+

【AI智能体】Claude Code 高级编程技巧实战项目详解

Claude Code 高级编程技巧实战项目详解

congge 1万+

用Jmeter做web端接口的负载测试

一、 查看接口测试 1、用badboy录制登录和进入日报操作的脚本->导出至jmeter格式 备注: 1)如果要衡量一个页面(页面渲染完成)的性能时,我们就需要考虑完成页面渲染所需要的图片、css和js等资源文件,因此用Jmeter录制脚本 2)如果仅测试某操作的响应时间,比如:登录,则就用badboy录制脚本。因为badboy不会录制图片、css和js等资...

changyixue的博客 1680

深入浅出SCSI子系统(一)Linux 内核中的 SCSI 架构

scsi系统

sinat_37817094的博客 6489

jmeter实现负载均衡_Jmeter实现简单web负载测试

Jmeter实现简单web负载测试简介Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI脚本、Java 对象、数据库, FTP 服务器, 等等。安装上面的文字提到 Jmeter是基于Java进行开发的,所以理论上我们可以...

weixin_29935511的博客 1616

MATLAB 图像滤波:高通、低通、带通和方向滤波器

在 MATLAB 中,我们可以使用不同类型的滤波器对图像进行处理,包括高通滤波器、低通滤波器、带通滤波器和方向滤波器。通过以上代码示例,我们介绍了 MATLAB 中使用高通滤波器、低通滤波器、带通滤波器和方向滤波器对图像进行滤波的方法。高斯滤波器可以实现带通滤波效果,通过调整滤波器的方差参数可以控制带通滤波器的频率范围。这里的平均滤波器是一种常见的低通滤波器,通过对图像周围的像素进行平均来实现平滑效果。Sobel 滤波器是一种常用的方向滤波器,用于检测图像中的水平和垂直边缘。函数将高通滤波器应用于图像。

CyberSparkZ的博客 1396

4、分布式发电系统中用于改善电能质量的有源、无源和混合滤波器

本文探讨了分布式发电系统中,尤其是光伏(PV)系统运行过程中引入的电能质量问题,并分析了有源滤波器、无源滤波器及混合滤波器在改善电能质量方面的应用。文章详细介绍了光伏系统的建模、最大功率点跟踪(MPPT)技术,以及谐波、电压波动等技术问题,同时对各类滤波器的拓扑结构和控制方法进行了系统性总结。通过仿真实例比较了不同滤波器在减少谐波方面的效果,为实际工程应用提供了参考依据。

transformer2023的博客 92

Jmeter压力测试案例

介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。 官方网站:http...

ccccccccc 1万+

matlab 计算点云粗糙度

A Correspondence Framework for ALS Strip Adjustments based on Variants of the ICP Algorithm

点云侠的博客 1830

压力测试工具Apache JMeter:5:使用HTTP请求进行Web应用测试

Apache JMeter是一个纯Java开发的用于负载测试或者性能测试的开源软件。JMeter起初就是被设计用来进行Web应用的压力测试,这篇文章通过使用Docker拉起一个Nginx容器,然后对其进行压测这样一个即为简单的例子来介绍一下使用JMeter进行压力测试的流程和方法。

知行合一 止于至善 2542

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

JMeter在Web Services性能测试中的应用

性能测试是任何分布式或Web应用程序测试计划的重要组成部分。在计划和开发周期中进行性能评价,可以保证交付给客户的应用程序满足客户对于高负载、可用性和可伸缩性的要求。提前确定软件的负载限制可以为适当地进行系统配置提供帮助,从而避免出现意料之外的故障。系统性能分析中要处理的几个问题是:系统或服务器能否处理数百个或数千个客户端的同时请求,以及系统可以处理请求的频率。这种类型的测试不但提供了系统响应时间的

steven_chr的专栏 2930

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jmeter负载测试测试_使用Apache JMeter负载测试Web应用程序

jmeter负载测试测试 Apache JMeter是用于模拟Web应用程序上的用户负载以测试性能的出色工具。 您可以通过指定用户数量和请求间隔来轻松地构建测试计划,然后JMeter将为每个用户生成一个线程并访问您的Web应用程序。 在测试结束时,您将获得一份性能摘要报告,其中显示了最小,最大和平均响应时间。 这是使用JMeter的快速演练: 从这里下载JMeter 运行jmet...

最佳 Java 编程 286

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

测试面试必备:什么是 Apache JMeter?

Apache JMeter 是一个开源的负载测试工具,主要用于测试 Web 应用程序的性能和功能。它最初设计用于测试 Web 应用程序,但现在已扩展到其他测试功能,如数据库、FTP 服务器和 REST API 等。

qq_58299462的博客 1864

使用 Apache Ant 和 Apache JMeter 频繁进行负载测试

<br />from:http://tech.ddvip.com/2008-08/121964804557769_6.html<br /> <br /> <br />内容摘要:您的软件系统可供多少用户同时访问?在不引起性能下降的前提下可以加载多少数据?您的系统有多大的吞吐量需求?间隔多久测试一次这些需求?如果您每天至少可以指定并确认一次这些负载和性能需求得到了满足,又会怎样?<br /> <br /> <br /> <br />负载测试通常在开发周期的后期执行,但是并不一定要这样。在 让开发自动化 的这一期

biexf的专栏 3173

Jmeter、Apache ab并发负载压力测试

1.1 并发数 一个子系统(一台Tomcat),并发数为:200/s(每秒) 说明:如果要处理并发数为2000/s(需要使用10台Tomcat做集群处理)     1.2 Jmeter压力测试工具 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动...

huangyh技术栈 1525

Apache JMeter web性能测试实例

from: http://tech.ddvip.com内容摘要:典型的JMeter测试包括创建循环和线程组。循环使用预设的延迟来模拟对服务器的连续请求。线程组是为模拟并发负载而设计的。Apache JMeter是可以对利用HTTP或FTP服务器的应用程序进行测试的工具。它是基于Java的,通过所提供的API它还具有高度可扩展性。典型的JMeter测试包括创建循环和线程组。循环使用预设的延迟来模拟对服务器的连续请求。线程组是为模拟并发负载而设计的。JMeter提供了用户界面。它还公开了API,用户可以从Jav

biexf的专栏 1388
上一篇: 如何利用Net-SNMP工具套件管理并监控服务器
下一篇: 如何使用JMeter记录测试场景
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值