Apache JMeter简介
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。目前在很多客户现场都有遇到采用该软件进行数据库测试的场景。
JMeter安装
首先需要从Apache官网下载JMeter软件:https://jmeter.apache.org/download_JMeter.cgi
通常情况下,我们选择最新版本的二进制免安装包,解压缩后可以直接使用:
如上图,由于JMeter采用Java,所以需要下载安装对应的Java运行环境,这里默认大家已经安装完成。
安装完成后,打开JMeter的bin目录下对应操作系统版本的bash文件即可,如下图,我在Mac上打开的是Unix可执行文件,此时会展现出一个UI界面。
准备压测环境
1. 在Greenplum数据库创建压测表
首先我们需要准备好用于压力测试的数据库表结构及数据,如果没有真实的业务场景,在POC时,可以多跟客户沟通,尽量采用贴近客户业务场景的结构和数据量进行测试。此处仅用于展示如何构建测试,所以采用一个简单的表,表结构及构造数据如下:
create table t(id int,name text);
insert into t select generate_series(1,10000),'zhangsan'||generate_series(1,10000)::text;
2. 构建JMeter测试计划
1)新建测试线程组(thread group)
在线程组中,可以设置线程数(即同时并发的用户数),另外可以根据实际情况定义压测的逻辑,我下图定义的是200个并发持续压测5分钟的例子。
2)增加驱动jar包
3)新建JDBC连接
设置JDBC连接信息时,需要注意两点:1.创建连接池的名称(后面会复用)及大小(根据实际业务场景调整大小);2.JDBC连接信息需要与所采用的jar包对应。
第2点连接信息参考:
Pivotal 官方驱动类:com.pivotal.jdbc.GreenplumDriver
Pivotal 官方驱动连接URL:
jdbc:pivotal:greenplum://host:port;DatabaseName=<name>
PostgreSQL 驱动类:org.postgresql.Driver
PostgreSQL 驱动连接URL:jdbc:postgresql://localhost:port/dbname
4)添加JDBC请求
添加请求时,需要将上面定义好的连接池名称对应填入,然后将模拟查询的语句写到查询脚本框内:
5)添加报告
通常情况下,习惯上增加:Aggregate Report聚合报告、Summary Report汇总报告和View Results Tree查看结果树。
压测及结果分析
脚本和数据库都准备好后,我们可以通过点击绿色三角按钮开始压测,状态栏的功能如下:
上一部分,我们增加了3个报告,其中“查看结果树”功能可以帮助我们在脚本编写过程中通过运行日志查看脚本是否存在问题,如下图:
聚合报告和汇总报告用于展示压测过程中及压测结束后的相关信息,如下图:
各项指标的具体解释如下:
| field | 字段 |
| --------------- | -------------------------- |
| Samples | 执行次数(JDBC请求) |
| Average | 平均响应时间(ms) |
| Median | 中位数 (50%用户的响应时间) |
| 90% Line | 90%用户的响应时间 |
| 95% Line | 95%用户的响应时间 |
| 99% Line | 99%用户的响应时间 |
| Min | 最小响应时间 |
| Maximum | 最大响应时间 |
| Error(%) | 响应错误率(%) |
| ThroughPut | 吞吐量 |
| Received KB/sec | 接受数据量(KB/秒) |
| Send KB/sec | 发送数据量 |
苑泽福
从业十几年,曾供职于鼎兴达、瀚高,拥有丰富的数据库开发运维经验,近年来一直专注于Greenplum数据库,主导并完成了多个基于Greenplum的数据平台落地。目前专注于物联网产品研发,处于创业阶段。希望能用有限的时间,为Greenplum开源社区作出微薄贡献。业余时间喜欢跑步、踢球。
Greenplum中文社区成员
山东辉鸿泛在电子科技有限公司技术总监