中文

Apache Pulsar 在企业规模下的 150 万条消息/秒与延迟优化:基准测试报告

分布式、并行与集群计算 2026-04-01 v1 网络与互联网体系结构

摘要

本文为 Apache Pulsar 实践者提供两个独立贡献。首先,我们在仅使用三个裸金属 Kubernetes 节点运行 Pulsar 4.0.8 配合 Java 21 和 ZGC 分代垃圾回收时,验证了 1,499,947 条/秒的吞吐量, median 发布延迟为 3.88 ms,并推算出硬件驱动的路径可实现 1500 万条/秒,基于 15 台机器的五个独立集群,采用基于键的分区路由。硬件选择——特别是实现 0.02 ms fdatasync 和 25 Gbps 网络接口的专用 NVMe 日志——是吞吐量上限的主要决定因素,而非计算或软件调优。其次,我们追踪了从 213 ms GC 峰值和 13-18 ms median 发布延迟的生产环境到 3.88 ms 的完整延迟优化之旅。我们识别并解决了三个独立的根本原因:通过切换到 ZGC 分代垃圾回收消除 G1GC 暂停;通过专用 NVMe 日志将日志 fdatasync 延迟从 5.1 ms 降至 0.02 ms;以及在 BookKeeper 的 ForceWriteThread 中发现的一种此前未记录的 Linux 内核页面缓存写入回显 interaction——即使在物理上分离的 NVMe 驱动器共享内核块层,仍会将 fdatasync 延迟从低于 1 ms 降至 15-22 ms。这一发现未收录在官方 Apache Pulsar 和 BookKeeper 文档中,对所有经历未知 P99.9 延迟峰值的 Pulsar 运维者都有关义。通过综合优化,实现了在 50 倍吞吐量提升下 4.7 倍的延迟改进。

关键词

引用

@article{arxiv.2603.29113,
  title  = {1.5 Million Messages Per Second on 3 Machines: Benchmarking and Latency Optimization of Apache Pulsar at Enterprise Scale},
  author = {Muhamed Ramees Cheriya Mukkolakkal},
  journal= {arXiv preprint arXiv:2603.29113},
  year   = {2026}
}

备注

4 pages, 3 figures, 7 tables. Short paper submitted to CNSM 2026 (22nd International Conference on Network and Service Management)