线程cpu占比比较高:1_scheduler、2_scheduler

三台emqx4.4.x做的集群(后面会减为2台),目前连接有1+w。

1_scheduler、2_scheduler 不知道线程是做什么用的 cpu占比比较高,该如何优化。

你的 CPU 是几个核心的?scheduler 线程是 Erlang 的调度器,用于分配任务,当负载较大时 CPU 时间片占用多是比较正常的现象。

三台ecs,2核4G。 有怎么优化手段么?
调用emqx的http api接口比较多,不知道跟这个有关系么?

会有关系。HTTP API 接口调用或者 MQTT 消息速率比较快都会导致 CPU 高。

由于设备的clientId后面随机数每次变化,有什么高效的方法判断设备是否在线?
现在用的是这连个api
/api/v4/clients?_like_clientid=someCID
/api/v4/subscriptions?_match_topic=xxx

当 clientid/subscriptions 数目比较多的时候,你的这两个模糊搜索方式会非常费。

建议使用完整的 clientid 字符串匹配搜索:/api/v4/clients/{clientid},不要使用 like*,也不要使用 username 来搜索。subscriptions 接口同样,使用完整的 topic 而不是通配符。