EMQX 版本
EMQX 5.3.2
EMQX 安装部署方式
docker部署
EMQX 集群情况
单节点
服务器(运行 EMQX 的机器)硬件配置
14核 32GB,CPU 型号:3th Gen Intel(R) Core™ i5-13600K
服务器操作系统和平台
Cento7.9, amd64
服务端参数优化情况
按照官方文档的性能调优部分配置操作系统和emqx的相关参数
压力机硬件配置
8核 16GB,CPU 型号:Intel(R) Xeon(R) Silver 4210R CPU @ 2.40GHz
压力机使用的测试工具
emqtt-bench
压力机参数优化情况
按照官方文档进行了优化
在 EMQX 中启用的功能
没启动影响性能的功能
测试场景
两台客户端机器,一台发布,一台订阅,配置如上,压测命令如下:
./emqtt_bench pub -c 1000 -i “pub-client-%c” -t “client-%c” -h 10.216.36.118 -I 500 -u admin -P public -m ‘{“forwardDate”:“2024-10-2215:02:08:999”,“metadatas”:{“96500678@electricKwh”:{“quality”:“0x00000000”,“reason”:“Good”},“96500678@electricIc”:{“quality”:“0x00000000”,“reason”:“Good”},“96500678@electricUac”:{“quality”:“0x00000000”,“reason”:“Good”},“96500678@electricUbc”:{“quality”:“0x00000000”,“reason”:“Good”},“96500678@electricIb”:{“quality”:“0x00000000”,“reason”:“Good”},“96500678@electricUab”:{“quality”:“0x00000000”,“reason”:“Good”},“96500678@electricKw”:{“quality”:“0x00000000”,“reason”:“Good”},“96500678@electricIa”:{“quality”:“0x00000000”,“reason”:“Good”}},“points”:{“96500678@electricKwh”:2807174.5,“96500678@electricIc”:41.05189,“96500678@electricUac”:388.7916,“96500678@electricUbc”:389.2592,“96500678@electricIb”:39.427113,“96500678@electricUab”:389.43533,“96500678@electricKw”:-0.21869414,“96500678@electricIa”:39.49932},“receiveItemSize”:8}’
./emqtt_bench sub -c 1000 -i “sub-client-%c” -t “client-%c” -h 10.216.36.118 -u admin -P public
具体问题
压测持续几秒钟后,客户端断连,日志报错如下:
Process: <0.5791.0> on node ‘emqx@172.17.0.2’, Context: maximum heap size reached, Max Heap Size: 6291456, Total Heap Size: 11101570, Kill: true, Error Logger: true, Message Queue Len: 13, GC Info: [{old_heap_block_size,4298223},{heap_block_size,6566731},{mbuf_size,236808},{recent_size,1754767},{stack_size,190},{old_heap_size,0},{heap_size,2984686},{bin_vheap_size,2946376},{bin_vheap_block_size,5708181},{bin_old_vheap_size,0},{bin_old_vheap_block_size,5708181}
emqx容器崩溃退出,崩溃原因日志未显示。
想请教一下该如何排查emqx异常退出的原因