JMeter基于http请求的web接口性能测试总结

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: [本文出自天外归云的博客园] 基于http请求的web接口性能测试总结 压测的目的:对于Web接口压测的目的最终是要在对数据库造成压力的情况下观察压测服务器的cpu是否达到预警值、memory是否发生激变甚至泄露、响应结果的error率以及数据库服务器读写方面的情况是否正常等等情况。

[本文出自天外归云的博客园]

基于http请求的web接口性能测试总结

压测的目的:对于Web接口压测的目的最终是要在对数据库造成压力的情况下观察压测服务器的cpu是否达到预警值、memory是否发生激变甚至泄露、响应结果的error率以及数据库服务器读写方面的情况是否正常等等情况。

测试环境的准备

我们要准备压测服务器和压力机,并建立二者之间的联系。

压测服务器

用来提供服务的,也就是我们的测试服务器,上面发布的是压测分支,我们首先要基于压测基准分支拉一个压测分支并push到远端,然后把开发的代码合到压测分支上再push到远端,发布到压测服务器。一般来说,我们的压测服务器是单节点的tomcat,而线上环境往往是多台服务器组成的负载均衡集群。

压力机

压力机是用来提供压力的,我们通过jmeter来做并发。实际测试中,压力机可以选择本机,也可以选择压测服务器。

不同点是:本机有jmeter界面,测试结果很直观,而压测服务器上是没有ui的;

优缺点是:选择本机的优点就是压测结果展示方便,Windows图形化压测结果展示,但是缺点是本机到压测服务器之间的网络情况会影响压测结果的准确性。而在压测服务器上进行就不存在这个问题。

建立联系

在压力机上把hosts切换到压测环境上,这样就可以对压测环境进行加压。

测试数据的准备

对于数据库方面施加压力,我们是通过分析http请求,找出能够对数据库产生压力的参数(这个参数往往会被用于与数据库进行交互,比如进行增删改查),然后对参数进行mock,做出足够数据量和满足复杂度的参数,通过并发http请求的方式来间接对数据库施加压力。这是针对与参数来做数据,以便模拟足够多样的http请求。再就是我们会在数据库表中插入一定量的数据,以满足数据库方面的数据量要求,模拟现实情况下数据库表中的数据量。前者是针对用户行为做数据,后者是针对数据库现状进行模拟,二者共同为压测提供模拟数据支持。

压测脚本的准备

我们通过jmeter来制定压测计划,在jmeter中创建压测计划,添加线程组,然后在线程组中添加http请求、聚合报告、查看结果树、图形结果等。调试没问题,脚本可以跑通了,就可以对线程组设置线程属性(设置并发量),在调度器配置中设置好持续并发时间进行压力测试了。我们可以把本机做压力机,在本机切换hosts到压测环境进行压测。也可以把配置好的jmeter脚本连通jmeter文件夹一起打包zip文件发到压测linux服务器上,然后在自己的目录下“unzip jmeter.zip”,“cd”到解压后的目录下,“chmod 777 jmeter.sh”添加执行权限,然后“./jmeter.sh -n -t 你的压测.jmx -l result.jtl”来执行压测,压测结果会保存到result.jtl文件中,在当前目录下。我们可以在服务器执行压测过程中观察测试结果,也可以在测试结束后在linux服务器上查看与分析result.jtl文件(也可以通过“sz result.jtl”命令将文件下载到本机,具体的下载存放路径在SecureCRT的Options->Session Options->X/Y/Zmodem中设置)。实际的压测过程中,我们会不断修改线程数,更改并发量。随着并发线程数的增加,当平均响应时间开始显著增加而每秒的吞吐量近乎不变的时候,这个并发量所对应的每秒吞吐量就是瓶颈点所在。

压测过程中会遇到的问题

在压测过程中,可能会遇到“NoHttpResponseException (the target server failed to respond)”。这是由于jmeter自身设置的问题导致的,修改jmeter.properties中的httpclient4.retrycount和httpclient4.idletimeout值就可以了,然后修改jmeter中设置http请求继承自HttpClient4。

在压测过程中,可能会遇到“java.net.URISyntaxException: Illegal character in query at index xxx”,这可能是由于你对于http请求参数没有勾选编码造成的,解决办法如下:

 

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
1月前
|
监控 测试技术 定位技术
HTTP代理IP响应速度测试方案设计与指标体系
随着数字化发展,网络安全、隐私保护及内容访问自由成为核心需求。HTTP代理因其技术优势成为热门选择。本文介绍HTTP代理IP响应速度测试方案,包括基础性能、稳定性、地理位置、实际应用、安全性测试及监控指标,推荐测试工具,并提供测试结果评估标准。
42 2
|
5月前
|
开发框架 缓存 .NET
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
250 0
|
4月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
289 7
Jmeter实现WebSocket协议的接口测试方法
|
4月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
299 3
快速上手|HTTP 接口功能自动化测试
|
4月前
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
129 6
|
4月前
|
SQL 存储 安全
Web安全-CSRF跨站请求伪造
Web安全-CSRF跨站请求伪造
119 4
|
5月前
|
网络协议 安全 前端开发
【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
|
6月前
|
数据采集 缓存 负载均衡
实测 | 芝麻代理,快代理、熊猫代理、豌豆代理HTTP代理质量测试
哈喽大家,欢迎来到本期知识分享!我们将探讨HTTP代理的质量分析方法,无论新手还是资深用户都能从中受益。首先介绍了HTTP代理的基本概念及其重要性。接着,我们通过两个关键指标——响应时间和可用性来评估代理质量。响应时间可通过`curl`命令测试并计算平均值;可用性则需设置定时任务持续检测,比如使用Python脚本。最后,通过具体案例分析了几家知名代理供应商的表现,其中青果网络在各项指标上表现突出,是进行数据采集等活动的优质选择。记得选择最适合自己的代理服务哦!
实测 | 芝麻代理,快代理、熊猫代理、豌豆代理HTTP代理质量测试
|
5月前
|
Web App开发 安全 JavaScript
【Azure 应用服务】App Service 通过配置web.config来添加请求返回的响应头(Response Header)
【Azure 应用服务】App Service 通过配置web.config来添加请求返回的响应头(Response Header)
100 0
|
5月前
|
API
【Azure API 管理】在 Azure API 管理中使用 OAuth 2.0 授权和 Azure AD 保护 Web API 后端,在请求中携带Token访问后报401的错误
【Azure API 管理】在 Azure API 管理中使用 OAuth 2.0 授权和 Azure AD 保护 Web API 后端,在请求中携带Token访问后报401的错误