You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NATS JetStream多并行消费者场景下发布者性能骤降问题咨询

概述

我们使用nats bench CLI工具对NATS JetStream在不同变量下的性能进行基准测试。

我们的业务场景需要10万个并行临时消费者(ephemeral consumer)订阅流。选择JetStream和临时消费者的原因是,我们需要向浏览器应用推送实时数据,且应用需支持消息重放能力,以便在加载前获取所有订阅主题的最新状态。

基准测试后发现,随着并行消费者数量增加,发布者吞吐量急剧下降。

我们运行以下命令测试10KB payload、10万条消息的场景,该命令会创建<sub>个临时消费者和<pub>个并行发布者:

nats bench bar --js --pub <pub> --sub <sub> --size 10000 --msgs 100000 --maxbytes=50GB --no-progress --purge

测试结果

以下是不同pub和sub值下的输出,测试实例为AWS EC2 m5.2xlarge(8核CPU,32GB内存):

pub: 1, sub 1: Publisher Throughput: 19082.0 msgs/sec
pub: 1, sub 10: Publisher Throughput: 8432.67 msgs/secc
pub: 1, sub 100: Publisher Throughput: 1047.33 msgs/sec
pub: 1, sub 1000: Publisher Throughput: 83.33 msgs/sec

测试复现步骤

  • 安装nats-cli
  • 安装nats-server
  • 以JetStream模式运行nats server:nats-server -c server.conf --js
  • 运行以下nats bench命令:
nats bench bar --js --pub 1 --sub 1 --size 10000 --msgs 100_000 --maxbytes=50GB --no-progress --purge
nats bench bar --js --pub 1 --sub 10 --size 10000 --msgs 100_000 --maxbytes=50GB --no-progress --purge
nats bench bar --js --pub 1 --sub 100 --size 10000 --msgs 10_000 --maxbytes=50GB --no-progress --purge
nats bench bar --js --pub 1 --sub 1000 --size 10000 --msgs 1000 --maxbytes=50GB --no-progress --purge

已尝试方案及观察结果

  • 采用AWS m5.2xlarge实例搭建3节点和5节点集群进行水平扩展,发布者吞吐量无显著提升,结果类似。
  • 垂直扩展至m5.8xlarge(32核CPU,128GB内存),单节点、3节点和5节点配置下均无显著提升,即使有1万个消费者时CPU利用率也仅达25%左右,未充分利用。
  • 将nats bench的--consumerbatch和--pubbatch参数从默认100修改为1000,无显著提升。
  • 启用--multisubject参数,无显著提升。
  • 搭建5节点集群,仅向leader节点发送发布请求,消费者仅连接其余4个非leader节点,无显著提升。
  • 在上述所有场景中,数据显示发布者吞吐量与单个消费者的订阅吞吐量匹配。
  • 使用NATS core publish替代JetStream publish后性能大幅提升,但需了解该方案的弊端。

预期行为

发布者吞吐量不应随并行消费者数量增加而显著下降。

技术问询

  • JetStream中并行消费者数量增加导致发布者吞吐量骤降是否为预期行为?背后原因是什么?如何提升JetStream发布吞吐量?
  • JetStream支持的单流、单服务器最大并行临时消费者数量分别是多少?
  • 使用NATS core publish替代JetStream publish有何弊端?据我理解,只要主题属于JetStream流,两种方式都会保留、持久化并复制消息。
  • 为何NATS core publish性能不受消费者数量影响,而JetStream publish受影响?
  • nats bench工具是否存在限制导致测试结果偏差?

内容的提问来源于stack exchange,提问作者Anish Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:31:10