如何获取每个客户端所占用的内存

环境信息

  • EMQX 版本:4.2.6
  • 操作系统及版本:redhat 7
  • 其他

问题描述

emq内存占用高,3.5万个客户端,占用了9G,有时会飙到 11G。想请教一下有没有办法获取每个客户端占用的内存大小,或者内存大部分被消耗在什么地方。

目前可以根据HTTP API 获取客户端的一些信息,如: mqueue_len heap_size ,但是看不出来,这些参数和内存占用有什么直接的关系

目前没有直接获取每个客户端的内存占用的接口,只能手动连入 EMQX, 然后使用 observer_cli 等工具查看。
你有 3.5 万个客户端, 9G 的内存消耗,平均下来每个 269 kb的内存消耗,似乎并不算高。
内存耗用过高,可能和消息挤压或者开启了retain 功能有关,你可以先对这两点进行排查
EMQX 自带的命令行工具,也具有初步的内存排查能力,详细的见 vm commandrecon command
https://www.emqx.io/docs/en/v4.4/advanced/cli.html#vm-command

好的 ,多谢您的回复