查看节点中cpu占用的指令是什么

那pull那块有没有办法能关闭这些
prometheus {
mnesia_collector = disabled
vm_dist_collector = disabled
vm_memory_collector = disabled
vm_msacc_collector = disabled
vm_statistics_collector = disabled
vm_system_info_collector = disabled
}

不好意思。我刚才去确认了一下。v5.0.23上这配置也是没效果的…
在更高的配置上修了。修复的内容:perf: avoid to collect metrics if it has disabled · emqx/prometheus.erl@c4e97f6 · GitHub

所以如果实在是不方便升级版本的话:
稍等我组个不公开的命令可以直接在每个实例上执行了,也能生效。
但需要每次重启后再手动执行这个命令。

  1. 进入当前节点的shell
./bin/emqx remote_console
  1. 查看当前节点的collector有哪一些

执行:

Prev = prometheus_registry:collectors(default).

结果会返回一个这样的列表:
[emqx_prometheus,emqx_prometheus_mria,prometheus_boolean,
prometheus_counter,prometheus_gauge,prometheus_histogram,
prometheus_mnesia_collector,prometheus_quantile_summary,
prometheus_summary,prometheus_vm_dist_collector,
prometheus_vm_memory_collector,
prometheus_vm_msacc_collector,
prometheus_vm_statistics_collector,
prometheus_vm_system_info_collector]

  1. 清空collector
 prometheus_registry:clear(default).
  1. 再次用命令查看collectors,应该是空的
prometheus_registry:collectors(default).
  1. 注册新的collector(主要是删除那些影响CPU的collector
Now = Prev -- [prometheus_mnesia_collector, prometheus_vm_dist_collector,prometheus_vm_memory_collector,prometheus_vm_msacc_collector,prometheus_vm_statistics_collector,prometheus_vm_system_info_collector],
prometheus_registry:register_collectors(default, Now).
  1. 再次用命令查看collector,确认是不是没有那些vm相关的了。没有就是成功了。
  2. 按ctrl + C 后出再提示,再按小a 字母即 abort ,退出erlang shell

但是下次重启,或新的节点启动,还得按上面的步骤来一次。

CPU使用率降了10%左右,目前CPU水平还是高于压测水平20%左右的,可能是因为压测环境没有设备频繁上下线,连接是线性上升的,生产环境连接是不稳定的。