前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >性能工具之ngrinder区域配置小谈

性能工具之ngrinder区域配置小谈

作者头像
高楼Zee
发布2019-12-24 11:30:56
9460
发布2019-12-24 11:30:56
举报
文章被收录于专栏:7DGroup

背景

在日常的压测过程中,不同服务可能部署在不同的机房,为了避免网络因素,通常会在同网络环境下部署相应的压力机。理解原理才能做到《千山同一月,万户尽皆春。千江有水千江月,万里无云万里天》

架构图

决策分析图一

知识复习:

第一层是业务指标,

  • 响应时间
  • TPS
  • 错误率

第二层是操作系统

  • CPU
  • IO
  • MEM
  • NET

分析

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

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

通过在场景中简单的配置解决以上问题。

第一步 重命名war包并启动control服务

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

启动control服务: java -XX:MaxPermSize=200m-jar ROOT.war

出现2018-11-30 12:01:56.326:INFO:oejs.Server:main: Started @18683ms即表示服务启动成功,ps:这里启动服务是为了解压,如果不启动则不会有下一步的h2-1.3.168.jar包生成。

第二步 修改数据库模式

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

1、将数据库jar包复制一份至/usr/local下

代码语言:javascript
复制
cp -R /root/.ngrinder/tmp/webapp/WEB-INF/lib/h2-1.3.168.jar  /usr/local/

2、在usr/local下启动数据库,这里为了便于复用,我们将启动数据库的命令放到一个shell文件里

代码语言:javascript
复制
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里出现如下信息表示数据库启动成功

ps: tcpAllowOthers表示允许其他成员连接

webPort:数据库web页面的端口号,可通过ip+端口号访问数据库的web页面

tcpPort:数据库连接端口号

第三步 重新启动control

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

加载环境变量:

sudo su

source /etc/profile

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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配置里会用到该端口

2、登录后新建场景即可看到区域选项

至此region区域配置完成

第四步 数据迁移部分(如果不需要数据迁移可跳过此部分)

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

1.将现在使用的数据库备份:

代码语言:javascript
复制
cd /root/.ngrinder/db
  mv ngrinder.h2.db ngrinder.h2.db.bak

2.将h2.h2.db重命名为ngrinder.h2.db

代码语言:javascript
复制
mv  h2.h2.db ngrinder.h2.db

3.重新启动服务

验证:

1.在内嵌模式下添加一个脚本和场景
2.切换至Server模式,查看场景和脚本是否存在

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

其他 Agent配置:

Agent的默认存放位置为/usr/local

sudo su //切换超级用户

source /etc/profile //加载环境变量

/usr/local/ngrinder-agent //进入到该目录下

vim __agent.conf //编辑Agent的配置文件

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

修改后如下:

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

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

至此lugu区域Agent配置完成。

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

长江后浪推前浪,世上新人赶旧人,

江山代有人才出,下一句是各领风骚数百年。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 7DGroup 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 架构图
  • 决策分析图一
    • 知识复习:
      • 第一层是业务指标,
        • 第二层是操作系统
          • 分析
            • 第一步 重命名war包并启动control服务
              • 第二步 修改数据库模式
                • 第三步 重新启动control
                  • 1、切换到urs/local下,先加载环境变量再启动应用服务
                  • 2、登录后新建场景即可看到区域选项
                • 第四步 数据迁移部分(如果不需要数据迁移可跳过此部分)
                  • 1.将现在使用的数据库备份:
                  • 2.将h2.h2.db重命名为ngrinder.h2.db
                  • 3.重新启动服务
                • 其他 Agent配置:
                  • 修改后如下:
                    • 阿里云配置与其他类似,保证端口号配置一致即可
                    相关产品与服务
                    数据库
                    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档