• NATS_07:NATS之top工具监控以及测量调优工具


    概述

      你可以使用 nats-top 来实现类似于 linux 中 top 命令的实时监控 nats 服务;

      可以使用 nats 提供的工具来进行针对性的调优。

    安装nats-top

    $ go get github.com/nats-io/nats-top
    

     如果没有权限执行,那么需要以以下方式执行

    $ sudo -E go get github.com/nats-io/nats-top
    

    启动相关服务

      启动 NATS 服务并激活对应的监控端口

    $ gnatsd -m 8222
    

      执行 nats-top 来实时监控 nats 服务

    $ nats-top
    

     效果如下图所示:

      

      如上图所示,此时有两个客户端在运行着,nats-top 会实时对这两个客户端进行监控,最上面的信息打印的是 nats-server 相关的信息,包含:负载、内存使用情况、输入流、输出流等信息。如果此时再开启新的客户端,隔2~3秒之后上图就会出现第 3 个客户端信息。

    nats-top 参数介绍

    nats-top [-s server] [-m monitor] [-n num_connections] [-d delay_in_secs] [-sort by]
    

     对上面命令中的参数进行一一讲解:

     Description
    -m monitor Monitoring http port from gnatsd.
    -n num_connections Limit the connections requested to the server (default 1024).
    -d delay_in_secs Screen refresh interval (default 1 second).
    -sort by Field to use for sorting the connections (see below).

    nats-top 实际使用

      1. 在实时监控界面中,输入字母 o 即可进行指定字段排序,如上图所示,其中对应的字段都为大写,你要指定的排序字段只需要输入小写的就会按照正排重新排序。可以排序的字段有:

      cid, subs, pending, msgs_to, msgs_from, bytes_to, bytes_from, lang, version

      2. 在实时监控界面中,输入字母 s 即可触发,使得只显示连接的订阅者监控信息

      3. 在 nats-top 界面中,可以使用字母 q 进行安全退出,这和 linux 中的 top 命令退出是一致的

      4. 在 nats-top 界面中,可以使用字符来进行查看具体的参数信息 (也就是我们常说的帮助文档)

      5. 当然,在启动 nats-top 的时候可以指定查询规则,显示自己关心的连接信息,例如如下所示,只取出最大订阅者连接数的服务信息

    $ nats-top -n 1 -sort subs
    

    NATS 性能测试工具(nats-bench)

      NATS 是快速、轻量级和设置性能优先级的服务,并且NATS为测量和调优性能提供了相应的工具。

     1. 安装调优测量工具nats-bench

      go-nats安装文件中以及包含了这个工具,只需要我们找到对应文件进行命令安装即可。需要我们进入它自带的例子中,找到:examples/nats-bench.go 运行即可。

    $ cd $GOPATH/src/github.com/nats-io/go-nats/examples/
    $ go install nats-bench.go
    

       运行上面的命令如果提示没有找到对应的 GOBIN,那么需要我们设置一下 GOBIN 的路径。默认这个为空,不影响我们正常程序运行,但是 nats-bench 是需要这个路径的,说白了就是需要告诉它我安装的 nats-bench 需要放在哪个地方。我是放在了和 $GOPATH/bin 下了。

    $ vim ~/.bash_profile
    
    GOPATH="$PRE_GOPATH/myblog"
    GOBIN="$GOPATH/bin"
    
    export GOPATH=$GOPATH
    export GOBIN=$GOBIN

      修改完之后 source ~/.bash_profile 即可,之后再运行 go install nats-bench.go 即可成功。

      运行 nats-bench 命令会提示相关的帮助信息:

      nats-bench -h
      Usage: nats-bench [-s server (nats://localhost:4222)] [--tls] [-np NUM_PUBLISHERS] [-ns NUM_SUBSCRIBERS] [-n NUM_MSGS] [-ms MESSAGE_SIZE] [-csv csvfile] <subject>

      得到以上信息说明 nats-bench 已经安装成功,剩下的我们就可以开始测试和验证了。

     2. publisher 生产能力测试

      让我们运行一个测试,看看一个发布者可以发布十万条16字节消息NATS服务器有多快。

    $ nats-bench -np 1 -n 100000 -ms 16 foo

      让我们看一下一个发布者客户端每秒发送消息的数量与负载:

    Starting benchmark [msgs=100000, msgsize=16, pubs=1, subs=0]
    Pub stats: 7,055,644 msgs/sec ~ 107.66 MB/sec

      那么让我们再增加发布消息到一千万条数据,再来看一下具体输出信息:

    $ nats-bench -np 1 -n 10000000 -ms 16 foo
    Starting benchmark [msgs=10000000, msgsize=16, pubs=1, subs=0]
    Pub stats: 7,671,570 msgs/sec ~ 117.06 MB/sec

     3. 生产者/消费者 能力测试

      我们使用 nats-bench 命令同时模拟运行一个生产者 和 一个消费者 客户端,发送和接收16 byte 的共十万条数据,结果会显示对应的聚合结果即会分别打印出生产者 和 消费者各自的吞吐量情况:

    $ nats-bench -np 1 -ns 1 -n 100000 -ms 16 foo

      运行结果如下:

    Starting benchmark [msgs=100000, msgsize=16, pubs=1, subs=1]
    NATS Pub/Sub stats: 3,586,227 msgs/sec ~ 54.72 MB/sec
     Pub stats: 2,244,296 msgs/sec ~ 34.25 MB/sec
     Sub stats: 1,793,113 msgs/sec ~ 27.36 MB/sec

     4. 1个生产者/n个消费者(或者n个生产者/1个消费者) 能力测试

      当指定多个生产者或者多个消费者的时候,nats-bench 测试结果中会打印出生产者、消费者各个吞吐量详情,并带有处理数据 最大条数/最小条数/平均值 以及 每个的偏离误差等。

      <1. 以下运行 1个发布者/5个消费者 总共数据条数为一千万的验证测试

    $ nats-bench -np 1 -ns 5 -n 10000000 -ms 16 foo

      打印结果如下所示:

    Starting benchmark [msgs=10000000, msgsize=16, pubs=1, subs=5]
    NATS Pub/Sub stats: 5,730,851 msgs/sec ~ 87.45 MB/sec
     Pub stats: 955,279 msgs/sec ~ 14.58 MB/sec
     Sub stats: 4,775,709 msgs/sec ~ 72.87 MB/sec
      [1] 955,157 msgs/sec ~ 14.57 MB/sec (10000000 msgs)
      [2] 955,150 msgs/sec ~ 14.57 MB/sec (10000000 msgs)
      [3] 955,157 msgs/sec ~ 14.57 MB/sec (10000000 msgs)
      [4] 955,156 msgs/sec ~ 14.57 MB/sec (10000000 msgs)
      [5] 955,153 msgs/sec ~ 14.57 MB/sec (10000000 msgs)
      min 955,150 | avg 955,154 | max 955,157 | stddev 2 msgs

      <2. 以下运行 5个发布者/1个消费者 总共数据条数为1千万的测试验证(这种实际情况很少,一般都是消费者多于生产者,具体的大家可以思考一下)

      当指定多个生产者时,nats会根据 -n 总数据量来平均分配在这多个生产者上进行分发

    $ nats-bench -np 5 -ns 1 -n 10000000 -ms 16 foo

      打印结果如下所示:

    Starting benchmark [msgs=10000000, msgsize=16, pubs=5, subs=1]
    NATS Pub/Sub stats: 3,279,469 msgs/sec ~ 50.04 MB/sec
     Pub stats: 1,642,753 msgs/sec ~ 25.07 MB/sec
      [1] 330,667 msgs/sec ~ 5.05 MB/sec (2000000 msgs)
      [2] 329,542 msgs/sec ~ 5.03 MB/sec (2000000 msgs)
      [3] 329,105 msgs/sec ~ 5.02 MB/sec (2000000 msgs)
      [4] 328,667 msgs/sec ~ 5.02 MB/sec (2000000 msgs)
      [5] 328,553 msgs/sec ~ 5.01 MB/sec (2000000 msgs)
      min 328,553 | avg 329,306 | max 330,667 | stddev 764 msgs

    5. n个生产者/m个消费者能力测试

      以下指定 5个生产者/5个消费者 来进行验证测试

    $ nats-bench -np 5 -ns 5 -n 10000000 -ms 16 foo

      打印结果如下所示:

    Starting benchmark [msgs=10000000, msgsize=16, pubs=5, subs=5]
    NATS Pub/Sub stats: 6,716,465 msgs/sec ~ 102.49 MB/sec
     Pub stats: 1,119,653 msgs/sec ~ 17.08 MB/sec
      [1] 226,395 msgs/sec ~ 3.45 MB/sec (2000000 msgs)
      [2] 225,955 msgs/sec ~ 3.45 MB/sec (2000000 msgs)
      [3] 225,889 msgs/sec ~ 3.45 MB/sec (2000000 msgs)
      [4] 224,552 msgs/sec ~ 3.43 MB/sec (2000000 msgs)
      [5] 223,933 msgs/sec ~ 3.42 MB/sec (2000000 msgs)
      min 223,933 | avg 225,344 | max 226,395 | stddev 937 msgs
     Sub stats: 5,597,054 msgs/sec ~ 85.40 MB/sec
      [1] 1,119,461 msgs/sec ~ 17.08 MB/sec (10000000 msgs)
      [2] 1,119,466 msgs/sec ~ 17.08 MB/sec (10000000 msgs)
      [3] 1,119,444 msgs/sec ~ 17.08 MB/sec (10000000 msgs)
      [4] 1,119,444 msgs/sec ~ 17.08 MB/sec (10000000 msgs)
      [5] 1,119,430 msgs/sec ~ 17.08 MB/sec (10000000 msgs)
      min 1,119,430 | avg 1,119,449 | max 1,119,466 | stddev 12 msgs
  • 相关阅读:
    Python:三元运算
    SaltStack部署服务及配置管理apache+php-第二篇
    SaltStack介绍及简单配置-第一篇
    git基础常用维护命令
    MySQL设置只读模式
    运维杂记-05
    Tomcat的配置,设置内存,获取用户IP
    Linux系统巡检项目
    Redis维护
    nginx配置文件说明
  • 原文地址:https://www.cnblogs.com/liang1101/p/6657235.html
Copyright © 2020-2023  润新知