性能工具之 nGrinder 区域配置

简介: 【5月更文挑战第7天】性能工具之 nGrinder 区域配置

一、前言

在日常的压测过程中,不同服务可能部署在不同的机房,为了避免网络因素影响,通常会在不同网络环境下部署相应的压力机。

二、部署架构图

image.png

三、问题分析

因为 nGrinder 集成的是所有机房的 Agent,所以当对服务器集群进行压测时,nGrinder 的 Controller 会随机从集群中选取压力机,这样就有可能会出现压测其他机房的服务使用的是另一个服务群压力机,因为两个机房的带宽并不足以支撑压测,可能会导致压测结果失真。

为了解决以上的问题,引入 nGrinder 区域的概念,即压测 XX 服务集群,只会用本身机房的压力机,压测其他服务集群,只会使用本身的压力机,实现结果如下:

image.png

四、区域配置

1、重命名 war 包并启动 control 服务

将 nGrinder 的 war 包上传到服务器(/usr/local),为了方便访问我们这里将 war 包重命名

image.png

启动 control 服务:

java -XX:MaxPermSize=200m-jar  ROOT.war

image.png

出现以下内容,即表示服务启动成功

2018-11-30 12:01:56.326:INFO:oejs.Server:main: Started @18683ms

ps:这里启动服务是为了解压,如果不启动则不会有下一步的 h2-1.3.168.jar 包生成。

2、修改数据库模式

因为之前 nGrinder 使用了中间件 tomcat 启动,tomcat 启动的数据库模式是使用的内嵌模式,而配置 region 需要使用 Server 模式,所以我们需要把内嵌模式改成 Server 模式。

  1. 将数据库jar包复制一份至 /usr/local 下
cp -R /root/.ngrinder/tmp/webapp/WEB-INF/lib/h2-1.3.168.jar  /usr/local/
  1. 在 usr/local 下启动数据库,这里为了便于复用,我们将启动数据库的命令放到一个 shell 文件里
vim h2start.sh
nohup java -cp "h2-1.3.168.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools.Server -tcpAllowOthers -webAllowOthers -baseDir /root/.ngrinder -webPort 9092 -tcpPort 9083 "$@" &
chmod 777 h2start.sh           //赋予权限
./h2start.sh                   //启动数据库

nohup.out 里出现如下信息表示数据库启动成功

image.png

  • TcpAllowOthers 表示允许其他成员连接
  • WebPort:数据库 web页 面的端口号,可通过 ip + 端口号访问数据库的 web 页面
  • TcpPort:数据库连接端口号

3、重新启动 control

  1. 切换到 urs/local 下,先加载环境变量再启动应用服务

加载环境变量:

sudo su
source /etc/profile

启动服务,这里为了便于复用,同样也是放到一个 shell 文件里

vim lugu8080.sh
nohup java -jar -XX:MaxPermSize=500m -jar ROOT.war -p 8080  -cm easy -clp 10010 -r lugu -cp 9001 -dh XX.XX.XX.XXX -dp 9083 &
chmod 777 lugu8080.sh        //赋权限
./lugu8080.sh

再启动阿里云的区域,同上:

vim aliyun8081.sh

nohup java -jar -XX:MaxPermSize=500m -jar ROOT.war -p 8081  -cm easy -clp 10011 -r aliyun -cp 9002 -dh XX.XX.XX.XXX -dp 9083 &
chmod 777 aliyun8081.sh     //赋权
./aliyun8081.sh             //启动应用程序
  • -p:web 访问端口号,不同的 region 对应不同的端口号
  • -cm:control 模式,这里配置的是简易集群模式
  • -r:区域名称
  • -dh:连接数据库的地址
  • -dp:连接数据库的端口号,这里的端口号与上一步数据库的 TcpPort 保持一致
  • -cp:控制端口,这个后续 Agent 配置里会用到该端口
  1. 登录后新建场景即可看到区域选项
    image.png

至此 region 区域配置完成

4、数据迁移部分(如果不需要数据迁移可跳过此部分)

由于之前一直使用的是内嵌数据库,应用程序会将数据存储在 /root/.ngrinder/db/ h2.h2.db 数据库中,而使用 Server 模式则会存放在 /root/.ngrinder/db/ngrinder.h2.db 目录下,所以需要保存之前的压测数据。

  1. 将现在使用的数据库备份:
cd /root/.ngrinder/db
  mv ngrinder.h2.db ngrinder.h2.db.bak
  1. h2.h2.db 重命名为 ngrinder.h2.db
mv  h2.h2.db ngrinder.h2.db
  1. 重新启动服务

    五、验证测试

  2. 在内嵌模式下添加一个脚本和场景
    image.png

image.png

  1. 切换至 Server 模式,查看场景和脚本是否存在
    image.png
    image.png

从上图可知,场景和脚本中的数据均未丢失,数据保持完整性。

六、其他 Agent 配置:

# Agent 的默认存放位置为     /usr/local
sudo su                   //切换超级用户
source /etc/profile       //加载环境变量
/usr/local/ngrinder-agent //进入到该目录下
vim __agent.conf          //编辑Agent的配置文件

修改 agent.controller_portagent.region 和第三步启动应用时设置的端口号、区域一致
image.png

修改后如下:
image.png

./run_agent_bg.sh -o                   //启动Agent并加载配置文件

使用 admin 用户登录,在代理管理下看到该 Agent 表示启动成功

至此 lugu 区域 Agent 配置完成。

阿里云配置与其他类似,保证端口号配置一致即可
image.png

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
5天前
|
网络协议 Java 测试技术
性能工具之常见流量复制工具
我们把用户访问系统造成的数据传输定义为流量,那么在用户访问系统的过程中,我们可以把进入和流出的数据复制下来,进行保存,待后续使用,即离线模式,或者转发到一个新的服务器,立即使用,即在线模式。
96 2
性能工具之常见流量复制工具
|
4天前
|
Java 测试技术 Apache
性能工具之JMeter5.0核心源码浅析
【5月更文挑战第14天】性能工具之JMeter5.0核心源码浅析
14 1
性能工具之JMeter5.0核心源码浅析
|
5天前
|
JSON IDE Java
性能工具之 nGrinder 关联脚本编写
【5月更文挑战第5天】性能工具之 nGrinder 关联脚本编写
19 2
性能工具之 nGrinder 关联脚本编写
|
5天前
|
SQL JSON Java
性能工具之 nGrinder Get 请求脚本编写
【5月更文挑战第3天】性能工具之 nGrinder Get 请求脚本编写
28 8
|
5天前
|
监控 Java 测试技术
性能工具之 nGrinder 入门安装及使用
【5月更文挑战第1天】性能工具之 nGrinder 入门安装及使用
26 5
性能工具之 nGrinder 入门安装及使用
|
5天前
|
JSON 测试技术 数据格式
性能工具之Jmeter关联入门
【4月更文挑战第4天】关联是每个性能测试人员必须掌握的技能,是解决性能脚本中的"金钥匙"。
27 2
性能工具之Jmeter关联入门
|
7月前
|
Kubernetes 网络虚拟化 Perl
k8s常用的网络插件优化方案|干货
k8s常用的网络插件优化方案|干货
|
7月前
|
Kubernetes Perl 容器
如何优化k8s网络插件?
如何优化k8s网络插件?
|
10月前
|
测试技术
15-Jmeter基于步骤的负载策略
15-Jmeter基于步骤的负载策略
|
10月前
|
监控 JavaScript 前端开发
一种基于日志服务CLI工具实现的多区域发布方案
一种基于日志服务CLI工具实现的多区域发布方案
394 2