EMQX 版本
EMQX 安装部署方式
EMQX 集群情况
服务器(运行 EMQX 的机器)硬件配置
4c8G
服务器操作系统和平台
linux,centos7
服务端参数优化情况
默认
压力机硬件配置
8c32g
压力机使用的测试工具
jmeter
压力机参数优化情况
在 EMQX 中启用的功能
测试场景
emq 部署在4c8g机器上,不开启emq的kafka插件,qps 轻松到好几千,开始插件后,qps最多只能到300,同时机器的cpu接近80%,qps上不去了。
具体问题
为什么cpu会这么高?
代码样例
attch进去,按cpu排序
你attach后用 observer_cli:start(). 看一下。
后台的日志有什么异常的么
你可以用这个Wolff,不需要裸用brod,而且我注意到你用的是sync模式。
你也可以再试试async的异步模式。
-export([handle_ack/3]).
send(...) ->
wolff:send(Producers, Messages, {fun ?MODULE/handle_ack, [self()]}).
handle_ack(Partition, Offset, Caller) ->
Caller ! {kafka_acked, Partition, Offset},
ok. % must return ok
我的mqtt报文比较大,有20k到120k不等,平均80k左右,这个会是导致cpu高的主要原因吗
异步我试过了,效果甚微,qps能高一点点,我看看你说的wolf
从你的图上看都卡在了brod_producer:sync_produce_request 上了。
如果是CPU太高了,估计就是到了瓶颈了。
如果只是QPS上不去,还可以加pool 优化下。。
你是不是把kafaka装在一台机器上了。我看emqx进程的CPU才191%,你说的4c8G(满了CPU得400%)啊
wolff给的例子是没发一条消息都创建一个producer,producer 可以公用吗,感觉每次创建一个,影响性能。