专栏首页7DGroup性能工具之ngrinder区域配置小谈

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

背景

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

架构图

决策分析图一

知识复习:

第一层是业务指标,

  • 响应时间
  • 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下

cp -R /root/.ngrinder/tmp/webapp/WEB-INF/lib/h2-1.3.168.jar  /usr/local/

2、在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里出现如下信息表示数据库启动成功

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

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

tcpPort:数据库连接端口号

第三步 重新启动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配置里会用到该端口

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

至此region区域配置完成

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

由于之前一直使用的是内嵌数据库,应用程序会将数据存储在/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

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

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配置完成。

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

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

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

本文分享自微信公众号 - 7DGroup(Zee_7DGroup)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Ubuntu 下安装 MSSQL 2017 部分问题

    这是 MSSQL 2017 安装的内存要求,这里是2G,而实际上,没有2G的内存运行MSSQL也是没有任何问题的,那么怎么来修改呢?

    李郑
  • CNCF网研会:利用Vitess地理分片技术透明地解决数据本地化问题(视频)

    随着各国政府通过数据本地化法律,具有管辖权的数据库集群变得越来越重要。通常,支持数据本地化意味着重新设计应用程序的架构,并对新特性的交付进行打击。此外,将现有数...

    CNCF
  • MYSQL 5.6 从库复制的部署和监控

    (2) slave配置 slave如上安装时的配置,注意的是replicate-do-db、replicate-ignore-db的配置

    明哥的运维笔记
  • 基于喜欢的DB、Kubernetes操作器和容器存储运行自己的DBaaS

    几乎每天我都听人说到想把越来越多的工作转移到Kubernetes上。这可能有道理,因为上面来自StackOverflow的数据表明,Kubernetes已经真正...

    CNCF
  • Nodejs进阶:MD5入门介绍及crypto模块的应用

    MD5(Message-Digest Algorithm)是计算机安全领域广泛使用的散列函数(又称哈希算法、摘要算法),主要用来确保消息的完整和一致性。常见的应...

    IMWeb前端团队
  • 案例研究:Square Cash App

    自2009年以来,Square为小企业提供了快捷方便的信用卡支付服务。四年前,该公司通过其Cash App扩展到p2p交易领域。在经历了一些稳步增长之后,该应用...

    CNCF
  • CNCF网研会:利用Vitess地理分片技术透明地解决数据本地化问题(视频+PDF)

    随着各国政府通过数据本地化法律,具有管辖权的数据库集群变得越来越重要。通常,支持数据本地化意味着重新设计应用程序的架构,并对新特性的交付进行打击。此外,将现有数...

    CNCF
  • Helm 3预览:探索我们的未来 - 第6部

    这是Helm 3预览:探索我们的未来博客文章7部中的第6部,讨论关于Chart库。(查看我们之前关于对Chart依赖项的第5部。)

    CNCF
  • TiKV源码解析系列文章(十五)表达式计算框架

    上一篇 《TiKV 源码解析系列文章(十四)Coprocessor 概览》讲到了 TiDB 为了最大化利用分布式计算能力,会尽量将 Selection 算子、聚...

    CNCF
  • 数据科学篇| Pandas库的使用

    Pandas 可以说是基于 NumPy 构建的含有更高级数据结构和分析能力的工具包。在 NumPy 中数据结构是围绕 ndarray 展开的,那么在 Panda...

    Python编程与实战

扫码关注云+社区

领取腾讯云代金券