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 -n -ms foo
让我们看一下一个发布者客户端每秒发送消息的数量与负载:
Starting benchmark [msgs=, msgsize=, pubs=, subs=]
Pub stats: ,, msgs/sec ~ 107.66 MB/sec
那么让我们再增加发布消息到一千万条数据,再来看一下具体输出信息:
$ nats-bench -np -n -ms foo
Starting benchmark [msgs=, msgsize=, pubs=, subs=]
Pub stats: ,, msgs/sec ~ 117.06 MB/sec
3. 生产者/消费者 能力测试
我们使用 nats-bench 命令同时模拟运行一个生产者 和 一个消费者 客户端,发送和接收16 byte 的共十万条数据,结果会显示对应的聚合结果即会分别打印出生产者 和 消费者各自的吞吐量情况:
$ nats-bench -np -ns -n -ms foo
运行结果如下:
Starting benchmark [msgs=, msgsize=, pubs=, subs=]
NATS Pub/Sub stats: ,, msgs/sec ~ 54.72 MB/sec
Pub stats: ,, msgs/sec ~ 34.25 MB/sec
Sub stats: ,, msgs/sec ~ 27.36 MB/sec
4. 1个生产者/n个消费者(或者n个生产者/1个消费者) 能力测试
当指定多个生产者或者多个消费者的时候,nats-bench 测试结果中会打印出生产者、消费者各个吞吐量详情,并带有处理数据 最大条数/最小条数/平均值 以及 每个的偏离误差等。
<1. 以下运行 1个发布者/5个消费者 总共数据条数为一千万的验证测试
$ nats-bench -np -ns -n -ms foo
打印结果如下所示:
Starting benchmark [msgs=, msgsize=, pubs=, subs=]
NATS Pub/Sub stats: ,, msgs/sec ~ 87.45 MB/sec
Pub stats: , msgs/sec ~ 14.58 MB/sec
Sub stats: ,, msgs/sec ~ 72.87 MB/sec
[] , msgs/sec ~ 14.57 MB/sec ( msgs)
[] , msgs/sec ~ 14.57 MB/sec ( msgs)
[] , msgs/sec ~ 14.57 MB/sec ( msgs)
[] , msgs/sec ~ 14.57 MB/sec ( msgs)
[] , msgs/sec ~ 14.57 MB/sec ( msgs)
min , | avg , | max , | stddev msgs
<2. 以下运行 5个发布者/1个消费者 总共数据条数为1千万的测试验证(这种实际情况很少,一般都是消费者多于生产者,具体的大家可以思考一下)
当指定多个生产者时,nats会根据 -n 总数据量来平均分配在这多个生产者上进行分发
$ nats-bench -np -ns -n -ms foo
打印结果如下所示:
Starting benchmark [msgs=, msgsize=, pubs=, subs=]
NATS Pub/Sub stats: ,, msgs/sec ~ 50.04 MB/sec
Pub stats: ,, msgs/sec ~ 25.07 MB/sec
[] , msgs/sec ~ 5.05 MB/sec ( msgs)
[] , msgs/sec ~ 5.03 MB/sec ( msgs)
[] , msgs/sec ~ 5.02 MB/sec ( msgs)
[] , msgs/sec ~ 5.02 MB/sec ( msgs)
[] , msgs/sec ~ 5.01 MB/sec ( msgs)
min , | avg , | max , | stddev msgs
5. n个生产者/m个消费者能力测试
以下指定 5个生产者/5个消费者 来进行验证测试
$ nats-bench -np -ns -n -ms foo
打印结果如下所示:
Starting benchmark [msgs=, msgsize=, pubs=, subs=]
NATS Pub/Sub stats: ,, msgs/sec ~ 102.49 MB/sec
Pub stats: ,, msgs/sec ~ 17.08 MB/sec
[] , msgs/sec ~ 3.45 MB/sec ( msgs)
[] , msgs/sec ~ 3.45 MB/sec ( msgs)
[] , msgs/sec ~ 3.45 MB/sec ( msgs)
[] , msgs/sec ~ 3.43 MB/sec ( msgs)
[] , msgs/sec ~ 3.42 MB/sec ( msgs)
min , | avg , | max , | stddev msgs
Sub stats: ,, msgs/sec ~ 85.40 MB/sec
[] ,, msgs/sec ~ 17.08 MB/sec ( msgs)
[] ,, msgs/sec ~ 17.08 MB/sec ( msgs)
[] ,, msgs/sec ~ 17.08 MB/sec ( msgs)
[] ,, msgs/sec ~ 17.08 MB/sec ( msgs)
[] ,, msgs/sec ~ 17.08 MB/sec ( msgs)
min ,, | avg ,, | max ,, | stddev msgs
NATS_07:NATS之top工具监控以及测量调优工具的更多相关文章
- jvm系列(七):jvm调优-工具篇
16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化.工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗 ...
- Perf -- Linux下的系统性能调优工具,第 1 部分【转】
转自:https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/ Perf 简介 Perf 是用来进行软件性能分析的工具. 通过它,应用程序可以利用 ...
- Perf -- Linux下的系统性能调优工具,第 1 部分
Perf 简介 Perf 是用来进行软件性能分析的工具. 通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计.它不但可以分析指定应用程序的性能问题 (per t ...
- Java虚拟机(六):JVM调优工具
工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗费性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率较低,因此利用工具来分析jvm相关问题 ...
- JVM调优-工具篇
原文地址 16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化.工具做为图形化界面来展示更能直观的发现问题,另一 ...
- Linux性能分析调优工具介绍
1.常用性能分析工具 1)CPU性能分析工具 vmstat ps sar time strace pstree top 2)Memory性能分析工具 vmstat strace top ipcs ip ...
- Oracle第二话之调优工具
Oracle第二话之调优工具 原创if 0 = -I can 发布于2019-04-09 19:53:12 阅读数 172 收藏 展开 目录 1.告警日志 2.用户进程trace文件 3.动态性能视 ...
- Perf Event :Linux下的系统性能调优工具
Perf Event :Linux下的系统性能调优工具 2011-05-27 10:35 刘 明 IBMDW 字号:T | T Perf Event 是一款随 Linux 内核代码一同发布和维护的性能 ...
- JVM性能调优(4) —— 性能调优工具
前序文章: JVM性能调优(1) -- JVM内存模型和类加载运行机制 JVM性能调优(2) -- 垃圾回收器和回收策略 JVM性能调优(3) -- 内存分配和垃圾回收调优 一.JDK工具 先来看看有 ...
随机推荐
- 软工实践l练习一一利用github托管项目
这次实践的主题是在windows环境下将项目通过git将项目托管到github上.通过实践,基本掌握一些git命令的使用,在github上注册账号并学会创建repositly和organization ...
- Unity3D游戏开发——显示物品的仓库UI
访问仓库物品列表的方法 为了在UI中显示物品列表,我们需要给InventoryManager添加两个能够访问它的公有方法: 代码: ··· public List<string> GetI ...
- <构建之法>前三章读后感—软件工程
本教材不同于其他教材一贯的理知识直接灌溉,而是以对话形式向我们传授知识的,以使我们更好地理解知识点,更加清晰明确. 第一章 第一章的概述中,书本以多种方式,形象生动地向我们阐述了软件工程的内容,也让我 ...
- xpath 去除空格
normalize,字面意思就是正规化 加入space 大概意思就是空格的处理了 官方解释是这样的: 通过去掉前导和尾随空白并使用单个空格替换一系列空白字符,使空白标准化.如果省略了该参数,上下文节 ...
- [转帖]NVMe到底是什么?用它的SSD有啥优势?
NVMe到底是什么?用它的SSD有啥优势? 2015-8-20 14:00 | 作者:Strike | 关键字:NVMe,SSD,PCI-E SSD,超能课堂 分享到 有关注SS ...
- [转帖]Ubuntu 安装VNC的一个方法
来源: https://blog.csdn.net/CSDN_duomaomao/article/details/75270271 Ubuntu 16.04 LTS 安装VNC,在百度和谷歌找了很多教 ...
- mybatis的setting
在mybaits中,setting的的配置参数如下(如果不在配置文件中配置将使用默认值): 设置参数 描述 有效值 默认值 cacheEnabled 该配置影响的所有映射器中配置的缓存的全局开关 tr ...
- 【Linux笔记】linux crontab实现自动化任务
在服务器中我们经常需要定时自动让程序自动进行数据备份.程序备份.执行某个进程等等操作,在linux服务器一般使用crontab实现,而windows下使用计划任务实现,crontab是linux系统下 ...
- HDU4240_Route Redundancy
题目很简单.给一个有向图,求两点间的最大流量与任意一条路中的最大流量的比值. 最大流不说了,求出单条流量最大的路径可以用类似Spfa的方法来搞,保存到达当前点的最大流量,一直往下更新即可. 召唤代码君 ...
- 关于nginx的一点记录
(1) 安装nginx官网下载:http://nginx.org下载适合Windows的安装包,是一个压缩包,直接解压就可以了. (2) 启动nginx有三种方式启动:a. 双击nginx.exe图标 ...