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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM