性能工具之 nGrinder 区域配置

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 【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进行规格选择与性能压测。
目录
相关文章
|
6月前
|
网络协议 Java 测试技术
性能工具之常见流量复制工具
我们把用户访问系统造成的数据传输定义为流量,那么在用户访问系统的过程中,我们可以把进入和流出的数据复制下来,进行保存,待后续使用,即离线模式,或者转发到一个新的服务器,立即使用,即在线模式。
257 2
性能工具之常见流量复制工具
|
3月前
|
数据采集 缓存 监控
优化 Grafana 性能:技巧与窍门
【8月更文第29天】Grafana 是一个非常受欢迎的开源数据可视化平台,它能够连接到各种数据源并提供高度定制化的仪表板。然而,随着数据量的增长和复杂查询的增多,Grafana 的性能可能会受到影响。本文将探讨如何优化 Grafana 的性能,以提高其响应速度和稳定性,并通过具体的代码示例来展示这些技巧。
384 1
|
6月前
|
JSON IDE Java
性能工具之 nGrinder 关联脚本编写
【5月更文挑战第5天】性能工具之 nGrinder 关联脚本编写
41 2
性能工具之 nGrinder 关联脚本编写
|
6月前
|
IDE Java Maven
性能工具之Jmeter扩展配置元件插件
【5月更文挑战第20天】性能工具之Jmeter扩展配置元件插件
139 1
|
5月前
|
Web App开发 前端开发 网络协议
性能工具之常见压力工具是否能模拟前端
【6月更文挑战7天】性能工具之常见压力工具是否能模拟前端
33 0
|
5月前
|
监控 数据可视化 Java
掌握 JMeter 插件管理器:提升性能测试的利器
Apache JMeter 是一款强大的性能测试工具,其灵活性和扩展性使其在性能测试领域广受欢迎。JMeter 插件管理器(JMeter Plugins Manager)为用户提供了一个方便的平台来安装、更新和管理各种插件,从而大大扩展了 JMeter 的功能。
|
6月前
|
算法 Java 测试技术
性能工具之代码级性能测试工具ContiPerf
【2月更文挑战第23天】性能工具之代码级性能测试工具ContiPerf
407 1
性能工具之代码级性能测试工具ContiPerf
|
Kubernetes 网络虚拟化 Perl
k8s常用的网络插件优化方案|干货
k8s常用的网络插件优化方案|干货
|
Web App开发 缓存 JSON
可以用到项目的优化网站加载速度方案
可以用到项目的优化网站加载速度方案
77 0
|
Kubernetes Perl 容器
如何优化k8s网络插件?
如何优化k8s网络插件?