TDengine压力测试之RESTful

编程入门 行业动态 更新时间:2024-10-21 15:36:41

TDengine<a href=https://www.elefans.com/category/jswz/34/1768600.html style=压力测试之RESTful"/>

TDengine压力测试之RESTful

生产系统上线前都会进行压力测试,能承受多少并发,在大并发下性能如何,都是上线前必须要了解的。
TDengine 作为时序数据库(Time Series Database),提供了 RESTFul 接口,可以使用 HTTP 协议进行操作。这个接口在生产环境中性能如何,是否能够满足高并发要求,都需要压测后才能知道。
在此介绍 2 款实用的压测工具 ab 和 JMeter,这两者都是 Apache 开发的。ab 只能提供汇总后的结果,JMeter 可以提供每个请求的相应时间。因此 JMeter 更加复杂,占用资源更多。

1.ab

ab 是 Apachebench 命令的缩写,ab 是 Apache 自带的压力测试工具。ab 可以对不同类型服务器进行压力测试。比如nginx、tomcat、IIS等。

ab 能够创建多个并发线程,占用的资源非常少。

官网:.4/programs/ab.html

1.1.安装

ab 是 httpd 工具包里面的一个小工具,需要先安装 http 工具包。

#CentOS
yum install httpd-tools#Ubuntu
apt install apache2-utils

1.2.测试

1.2.1.参数解读
-n requests
#执行的请求个数。 -c concurrency
#一次产生的请求个数。-H custom-header
#对请求附加额外的头信息。 -p POST-file
#需要POST的数据的文件.-k 
#启用HTTP KeepAlive功能,在一个HTTP会话中执行多个请求。
1.2.2.测试命令

并发10个线程,共发送10000个请求,采用Keepalive方式。

#query.sql
select last_row(*) from db01.meters ;
ab -n 10000 -c 10 -k -H "Authorization: Basic cm9vdDp0YW9zZGF0YQ==" -p query.sql  http://192.168.0.11:6041/rest/sql
1.2.3.测试结果:
Concurrency Level:      10
Time taken for tests:   46.756 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      3030000 bytes
Total body sent:        2140000
HTML transferred:       2000000 bytes
Requests per second:    213.88 [#/sec] (mean)
Time per request:       46.756 [ms] (mean)
Time per request:       4.676 [ms] (mean, across all concurrent requests)
Transfer rate:          63.29 [Kbytes/sec] received44.70 kb/s sent107.98 kb/s totalConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    0  14.2      0    1002
Processing:    10   46  12.8     45     198
Waiting:        9   41  11.9     40     175
Total:         10   47  19.0     45    1048Percentage of the requests served within a certain time (ms)50%     4566%     5075%     5380%     5590%     6195%     6798%     7799%     88100%   1048 (longest request)

2.JMeter

Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。

JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。

官网:.html

2.1.安装

JMete 是基于 Java 开发的,使用前需求先安装 Java。

下载地址:.cgi

解压缩所安装包,执行运行可执行文件即可

tar xvzf apache-jmeter-5.4.3.tar.gz
cd apache-jmeter-5.4.3
sh jmeter.sh 

2.2.测试

2.2.1.创建测试任务

按照以下顺序创建一个测试任务

├── 1 测试计划├── 2 线程组│   └── 7 HTTP请求├── 3 HTTP信息头管理├── 4 汇总报告├── 5 聚合报告└── 6 用表格查看结果

2.2.2.参数设置
线程组

线程数:10
Ramp-Up时间(秒):1
循环测试:1000

HTTP信息头管理器

名称:Authorization
值:Basic cm9vdDp0YW9zZGF0YQ==

HTTP请求

服务器或IP:192.168.0.11
端口:6041
HTTP请求:POST
路径:/rest/sql
消息体数据:select last_row(*) from db01.meters;

2.2.3.测试结果

点击工具栏运行按钮即可开始测试

测试结果可在汇总报告和聚合报告中查看。

2.3 注意

执行 jemeter.sh 后就会提示

================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : .html
================================================================================

真实的生产环境不要使用 GUI 进行测试,GUI 只是用来调试测试文件的。
如果要进行压力测试,需要使用命令行模式(CLI Mode)。

3.ab 与 JMeter 对比

引用 jmeter和ab的对比 的结论

  • JMeter是一次完整的请求和返回;ab 只是发出去请求,并不对返回做处理。
  • JMeter可以提供更加详细的统计结果数据;ab 的结果为用数学方式统计平均值。
  • JMeter支持可变参数和 CSV 数据集的输入,能设定更加负责的测试样例;ab 不需要写配置文件。
  • JMeter不支持精确时间的压测;ab 支持。
  • JMeter GUI 比较重,并且统计了很多结果数据,比 ab 耗时耗费资源多;ab 属于轻量级。

更多推荐

TDengine压力测试之RESTful

本文发布于:2024-02-26 14:31:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1702837.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:压力测试   TDengine   RESTful

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!