AutoMQ BYOC(FSx WAL)· 撮合订单总线场景实测 —— 技术交流材料

致 AutoMQ 团队:这是我们在 AWS 东京区对 AutoMQ 商业版(BYOC,FSx for ONTAP WAL)做的一轮系统实测的整理。 目的是交流与请教:把我们看到的现象、复现条件和数据完整摆出来,请贵方指出我们在用法 / 配置上的不当之处, 并对其中的疑似缺陷给出解释、规避或修复计划。

口径:「实测」= 结果文件里的数字或 broker 日志原文;「我们的理解」= 推测,单独标出,欢迎纠正。 每个问题都给出复现条件;所有消息都做了逐条审计(丢失 / 乱序 / 重复),全部测试中未发现已确认消息丢失。

测试时间:2026-10-28 – 11-08 · 版本:控制台 8.4.7 → 8.4.8-aws,数据面 5.5.6 → enterprise-core 5.5.7(Kafka 3.9.1)。


目录

  1. 一页摘要
  2. 评估场景与门槛
  3. 测试环境
  4. 测试方法
  5. 测试覆盖
  6. 正面结果
  7. 需要交流的问题(7.1 双 FSx 专章 · 7.2 Q28 · 7.3 FSx 首选 AZ · 7.4 Q29 · 7.5 S3 · 7.6 灰色故障 · 7.7 kill -9 · 7.8 客户端规避的代价 · 7.9 运维与配置 · 7.10 部署与文档)
  8. 5.5.7 已不再复现的问题
  9. 问题清单汇总
  10. 建议的交流方式与我们能提供的材料

1. 一页摘要

我们测了什么:把 AutoMQ 商业版当作撮合 / 交易系统的订单总线来评估——单分区与多分区、acks=all + 幂等、开环定速订单流, 1k–200k msg/s 速率阶梯、1–4 h 浸泡,以及十余类故障与运维事件(进程崩溃、受控重启、AZ 网络分区、AWS FIS 模拟 AZ 级故障、 FSx HA 切换、broker ↔ FSx 灰色故障、S3 不可用、扩缩容、在线升级、单 FSx / 双 FSx)。

稳态表现很好:5.5.7 单分区 4 h 浸泡 288 M 条,p99 7.87 ms、p99.99 32.65 ms,0 丢 / 0 失败;客户端调优后单分区 200k msg/s、p99 8.66 ms; 在线升级、在线扩缩、FSx 备份 / 扩 IOPS / 扩 SSD 都几乎无感;broker 实例被停后 BYOC 约 1.7 min 自动拉起替换实例。

希望重点交流的 5 件事(详见 §7):

# 主题 一句话
1 双 FSx(file_system_count = 2) 我们按建议部署了双 FSx,但没有看到「消除 FSx 单点」的效果:切断任一套仍全集群停写;失去一套 ≈ 5 min 后部分分区不自愈、需人工重启;双 FSx 缩回单 FSx 会让 broker 崩溃循环(Q30)
2 Q28 FSx 首选 AZ 短暂网络分区后,长连接幂等生产者被持续 [OUT_OF_ORDER] 拒写、永久写不进去;5.5.7 仍复现
3 FSx 首选 AZ = 全集群故障域 该 AZ 网络分区或 AZ 级故障时,三个 AZ 的生产者一起停写(FIS 实验:369–376 s)
4 Q29 无任何故障,12 个生产者的负载下 CPU 背压把 RequestRate 配额 20,000 压到 ≈ 2,400,Produce 一起被限,周期性停写 5–8.6 s
5 S3 不可用 5.5.7 上 S3 不可用 300 s 即停写 106–136 s(5.5.6 同条件 0 影响),停写随 S3 中断时长增长

我们希望得到的:对每个问题,①是否为预期行为 / 已知问题;②正确的配置或用法;③若是缺陷,修复版本与时间; ④我们可以在新版本上按同一套方法复测并回传结果。


2. 评估场景与门槛

场景:撮合引擎的订单入口总线。要求同一 key(交易对 / 账户)严格有序、已确认消息零丢失、任何单点故障下停写尽量短且能自动恢复。 生产端为长连接网关(幂等生产者,acks=all),典型为单分区(严格全序)或少量分区。

我们用的评估门槛(项目内部建议值,供理解数据的含义;不是对产品的通用要求):

# 指标 门槛
L-1 / L-2 稳态写确认 p99 / p99.9(200 B,acks=all) ≤ 10 ms / ≤ 20 ms(20 / 50 ms 为可接受上沿)
L-3 2 h 浸泡 p99.99 / max ≤ 50 ms / ≤ 200 ms
F-1 单 broker 硬故障,受影响分区停写 ≤ 10 s(30 s 为可接受上沿)
F-2 FSx HA 切换,全集群停写 ≤ 5 s(30 s 且可预约为上沿)
F-3 已确认消息丢失 0
F-4 每 key 乱序 0
F-5 迁移 / 自平衡 / 滚动升级,每次停写 ≤ 3 s
F-6 恢复是否需要人工 全自动
F-7 S3 不可用时写路径不受影响的时长 ≥ 300 s

「停写」一律指订单流最长连续零确认秒数;「最大确认」是单条消息最长确认时间,二者不同,下文分开写。


3. 测试环境

项 值
Region / AZ ap-northeast-1,apne1-az1 / az2 / az4 各一台 broker
版本 控制台 automq-byoc-console:8.4.7-aws → 8.4.8-aws;数据面 5.5.6 → enterprise-core-5.5.7(Kafka 3.9.1,在线滚动升级);Terraform provider automq/automq 0.4.10
broker 3 × m7g.xlarge(4 vCPU / 16 GiB),KRaft combined(3 个都是 controller),broker.session.timeout.ms = 9000
WAL wal_mode = FSWAL,file_system_type = ONTAP_V2;FSx MULTI_AZ_2,384 MBps(部分测试 768 MBps)、1,024 GiB、3,072 IOPS(后升至 6,144);首选子网 = az2 的 broker 子网,备用 = az1
双 FSx 阶段 file_system_count = 2(控制台 apply 1,834 s),三台 broker 同时挂载两套 /wal;两套 FSx 的首选子网都在 az2
计费 Pay-as-you-go · pricing_mode = UsageBased
网络 broker 专用子网(每 AZ 一个、独立 NACL,用于故障注入),出网经 NAT;S3 Gateway Endpoint、EC2 Interface Endpoint;客户端在独立子网
客户端 3 × c7g.2xlarge(每 AZ 一台),Java 21,Kafka 客户端库 4.1.1;压测工具为自研 Bench(开环定速 + 逐条审计,可提供源码)
实例级配置 log.retention.ms = 3600000、auto.create.topics.enable = false;放置敏感测试中经 instance_configs 设 autobalancer.controller.exclude.topics(订单 topic 排除自动均衡,见 Q8)
服务端 zone router automq.zonerouter.channels=1@nfs:///mnt/nfs/1?…(STATIC)、automq.zonerouter.local.write.mode=router_channel(DEFAULT)

4. 测试方法

4.1 订单流模型

项 取值
消息 100 / 200 / 500 B;value = [生产者标签][key 序号][每 key 单调递增 seq][计划发送时刻][填充]
key 每生产者 64 个(浸泡 256),轮询分配;每 key 的 seq 从 0 单调递增
topic 多分区 me-orders 24 分区(均匀铺到 3 台);按 AZ 钉位的 me-pin-az1/az2/az4 各 6 分区;单分区 me-sp-az1(leader 在 az1)
发送 开环定速:第 i 条的计划时刻 = start + i / rate;延迟从计划时刻算,避免协调遗漏(coordinated omission)
生产者 acks=all、enable.idempotence=true;in-flight、linger、batch、压缩、超时、zone router 开关按变体组合(附录 A)
审计消费者 同一 JVM、同一时钟,assign 全部分区,从发送前的 end offset 读到 drain 结束(最多 90 s)
统计 对数线性直方图(< 10 ms 精度 10 µs)报 p50 / p90 / p99 / p99.9 / p99.99 / max;每秒时间线(发送、确认、失败、零确认秒)

4.2 逐条审计的定义

字段 定义
丢失(lost_exact) 收到成功确认、但 drain 结束后审计消费者仍未读到的条数(位图精确计算)。> 0 即一票否决
报失败但已写入(phantom) 生产者回调报失败、但审计消费者读到了的条数(Kafka 超时语义的通性,用于判断业务侧是否必须幂等)
重复 / 乱序 同一 (key, seq) 读到 ≥ 2 次 / 读到的 seq ≤ 该 key 已见最大值
未确认尾部 审计消费者落后(consumed < acked)且流内无缺口时,drain 内没读到的尾部单列为「未确认」,不计为丢失
零确认秒 每秒时间线中有发送、但确认数为 0 的秒

4.3 故障注入

故障 做法
进程崩溃 对 leader 所在 broker pkill -9 -f kafka.Kafka;另有二次崩溃、杀 controller
受控关闭 EC2 stop(触发 broker 受控关闭)
AZ 网络分区 broker 子网 NACL:保留子网内互通,对外全断(az2 子网同时承载 FSx 首选 ENI)
AZ 级组合故障 AWS FIS 一个实验内同时 aws:network:disrupt-connectivity(broker 子网,scope all,5 min,FIS 自动回滚)+ aws:ec2:stop-instances(该 AZ 的 broker);客户端不受影响
broker ↔ FSx 灰色故障 NACL 只拒绝 broker → FSx 浮动 IP 的 NFS 端口(111 / 635 / 2049 / 4045 / 4046)
FSx HA 切换 带外修改 FSx 吞吐档触发(AWS 例行维护会触发同类切换)
失去一套 FSx(双 FSx) 对其中一套 FSx 的 NFS 端口做上述切断,60 s / 300 s,可叠加 kill -9
S3 不可用 broker 实例角色内联 Deny s3:* 300 s / 900 s
运维事件 在线升级、扩缩 3 ↔ 6、分区迁移、控制台换 FSx 吞吐档、FSx 备份 / 扩 IOPS / 扩 SSD、FSx 邻居负载、历史回读

公共负载:三路审计订单流(三个 AZ 的客户端,各 5k msg/s × 200 B),注入前 130 s 稳态、注入后保持并在 finally 中撤销,每路 900 s + drain; 相邻故障间隔 ≥ 300 s;故障后对各 topic 做写入探测,判断是否自愈。

4.4 数据有效性纪律


5. 测试覆盖

类别 内容(5.5.7 为主,部分 5.5.6 对照)
稳态延迟 消息大小 × in-flight × linger × 放置(同 AZ / 跨 AZ / 靠近 FSx 首选)矩阵;1k–50k / 1k–200k 速率阶梯(单分区与多分区)
客户端调优 单分区 38 个客户端组合(batch.size、压缩、linger、in-flight、超时)按同一判据选优
浸泡 多分区 2 h、单分区 1 h / 4 h;双 FSx 2 h
业务形态 12 生产者同写、4 KiB 大消息、5 组消费者扇出、事务、单分区混合负载(24k msg/s + 事务)
故障 kill -9(5.5.6 15 次、5.5.7 23 次)、EC2 stop、AZ 网络分区(三个 AZ)、FIS AZ 级组合故障(az1 × 2、az2 × 2)、灰色故障、FSx HA 切换、S3 不可用、客户端超时 / 幂等 / zone router 各变体
双 FSx(D0–D11) 单 FSx 基线重跑、切断一套 66 s / 300 s、叠加 kill -9、计划内 HA 切换(单套 / 两套同时)、FSx 首选 AZ 分区、单分区 Q28、2 h 浸泡、缩回单 FSx
运维 在线升级 5.5.6 → 5.5.7、扩缩 3 ↔ 6、分区迁移、换 FSx 吞吐档、FSx 备份 / IOPS / SSD、邻居负载、历史回读 30 GB

6. 正面结果

项 5.5.7 实测
单分区 4 h 浸泡(20k msg/s × 200 B) 288.0 M 条:p50 6.16 / p99 7.87 / p99.9 15.35 / p99.99 32.65 / max 235.6 ms;0 丢 / 0 失败
客户端调优后单分区上限 batch.size 256 KiB + zstd(1):1k–200k 全部达标,200k p99 8.66 ms;1 h 浸泡(20k)p99.99 33.75 / max 88.82 ms
在线升级 5.5.6 → 5.5.7 逐台换实例,每台一个 1.1–2.9 s 尖刺,0 丢 / 0 乱序 / 0 重复 / 0 失败
在线扩缩 3 ↔ 6 订单 topic 最大确认 0.1–0.3 s(5.5.6 缩容为 2.14–2.39 s)
FSx 在线运维 备份、IOPS 3,072 → 6,144、SSD 1,024 → 1,536 GiB:三项最大确认 0.1 s、0 失败
FSx HA 切换(单 FSx) 单段 ≤ 6.5 s、最长零确认 3–4 s(5.5.6 最长 10.1 s),0 丢
broker 实例丢失 FIS 停掉 az1 broker 后,BYOC 约 1.7 min 在同 AZ 自动拉起替换实例
双 FSx 尾延迟 稳态 p50 低 0.3–1.1 ms;2 h 浸泡 p99.99 26.55 / max 56.8 ms(单 FSx 55.85 / 238.7 ms)
数据安全 全部测试中已确认消息丢失 0、乱序 0、重复 0

7. 需要交流的问题

每节格式:现象 → 复现条件 → 实测数据 → 日志原文 → 我们的理解(推测)→ 想请教。编号沿用我们此前材料中的 Q 编号,便于对照。

7.1 双 FSx(file_system_count = 2)—— 专章

背景:针对「FSx 是 WAL 单点」,贵方建议组合两个 FSx cluster。我们在 5.5.7 + 控制台 8.4.8 上部署了双 FSx(apply 1,834 s), 三台 broker 同时挂载两套 /wal,两套 FSx 的首选子网都在 az2。下表是同一 harness 下单 FSx 与双 FSx 的对照:

验证 单 FSx 双 FSx 我们的观察
稳态 p50 / p99(24 分区,1k → 50k) 6.5–7.5 / 9.9–15.9 ms 6.1–6.8 / 9.8–13.1 ms 略好 ✅
2 h 浸泡 p99.99 / max 55.85 / 238.7 ms 26.55 / 56.8 ms 尾部明显更好 ✅
切断一套 FSx(NFS 端口)≈ 66 s(D1) 全集群停写 62–70 s,0 失败 全集群停写 62–85 s,失败 16,644 没有切换到另一套
切断一套 ≈ 300 s(D2)/ 再叠加 kill -9(D3) (对照:broker ↔ FSx 切断 120 s ⇒ 停写 149 s,自愈) 零确认 369–524 s / 333–573 s,失败 289 万 / 439 万;故障撤销 10 min 后仍有分区不可写,受控重启 broker 后才恢复(2 / 2) 新的不自愈模式
单分区切断一套 300 s(D8) — 三路零确认 369 s,失败 89.7 万,自愈 没有切换
计划内 HA 切换(单套 2 次 + 两套同时 2 次) 零确认 3–4 s,最大 ≤ 6.5 s 零确认合计 16–39 s,最坏一秒 3.9–10.3 s,自愈 比单 FSx 更重
FSx 首选 AZ 网络分区 64 s(D6) 120–146 s(多分区) 全集群 71–74 s,0 失败,自愈 两套同时受影响(首选同 AZ)
单分区 FSx 首选 AZ 分区 61 s + delivery.timeout.ms=30000(D10) 2 次中 1 次永久卡死(Q28) 两路生产者永久卡死(≥ 773 s),失败 786 万,[OUT_OF_ORDER] 34 次 不缓解 Q28
缩回单 FSx(2 → 1) — broker 1 崩溃循环 1,266 次,控制台任务挂起 ≥ 3 h(Q30,下详) 无法回退

D2 / D3 中 broker 日志里没有 Q20 / Q21(5.5.6 的 kill -9 长尾)的特征,我们认为这是另一种故障模式。

Q30 细节(双 FSx 缩回单 FSx)

我们的理解(推测):file_system_count = 2 是 WAL 的负载分摊,不是健康感知的故障切换——每台 broker 同时依赖两套 FSx(NFS hard 挂载), 其中一套不可达时,写到它上面的 WAL 被阻塞而不是被避开,故障面从 1 套变成了 2 套;两套首选节点同 AZ,也没有 AZ 冗余。 缩容时 broker 恢复阶段读到旧的 WAL 映射,与新配置不一致。

想请教:

  1. 双 FSx 的设计目标是什么——吞吐 / 尾延迟分摊,还是可用性?如果是后者,D1 / D2 / D8 的表现是否符合预期?
  2. 是否有(或计划)「WAL 自动避开不可达的 FSx」的能力?需要什么配置?
  3. D2 / D3 故障撤销后,为什么部分分区持续不可写、需要受控重启?对应的日志特征与修复?
  4. 两套 FSx 的首选节点能否由控制台分到不同 AZ?
  5. 双 FSx 下计划内 HA 切换为什么比单 FSx 停顿更长?
  6. FSx 2 → 1 缩容是否受支持?若支持,正确步骤是什么;若不支持,控制台为何接受该变更、且不报错不回滚?Q30 的修复计划?
  7. 在贵方的推荐架构里,撮合类场景要消除 FSx 单点,应该怎么部署?

7.2 Q28 —— FSx 首选 AZ 短暂分区后,长连接幂等生产者永久写不进去

形态 · 客户端 复现 卡死 / 停写 失败笔数
5.5.6 多分区 · rt5 2 / 2 零确认 ≥ 769 s / 772 s,到运行结束未恢复;解除隔离 12 min 后仍在刷 [OUT_OF_ORDER] 384 万 / 386 万
5.5.7 多分区 · rt5 2 / 4 两次 770–771 s 零确认到运行结束;另 2 次全集群 127 s / 146 s 后自愈 152.9 万–483.8 万 / run
5.5.7 单分区 · rt5(单 FSx) 1 / 2 永久 一次三路全部永久卡死(≥ 770 s);一次 138–139 s 后自愈 1,141.7 万 / 148.2 万
5.5.7 单分区 · rt5(双 FSx,D10) 1 / 1 两路 773 s / 782 s 到运行结束未恢复 见 7.1

丢失全部为 0。broker 日志:对相关分区持续打印 [OUT_OF_ORDER] processing append operation(ElasticReplicaManager),单分区每次运行约 34 次。

7.3 FSx 首选 AZ = 全集群故障域

7.4 Q29 —— 无故障下 CPU 背压限制 Produce,周期性停写

7.5 S3 不可用时写路径停写(5.5.7 与 5.5.6 行为不同)

时长 · 形态 停写 失败 报失败但已写入 丢
300 s · 多分区(第 1 次) broker 0 分区 136 s;me-orders 两路各 11–20 s 130,372 22,988 0
300 s · 多分区(第 2 次) 全集群 125 s 45,754 9,837 0
300 s · 单分区 三路各约 106–132 s 3 0 0
900 s · 多分区 broker 0 分区连续 737 s;me-orders 连续约 534 s 234.7 万 95.4 万 0

对照:5.5.6 同条件 300 s 内写路径不受影响(0 失败,max 1.8 s)。停写 ≈ S3 中断时长 − 220 s,S3 中断越久停写越久。

7.6 Q7 —— broker ↔ FSx 灰色故障无自动隔离

7.7 kill -9 后的恢复时长(Q1 / Q2 / Q3 / Q23)

7.8 客户端规避之间的冲突(in-flight 1 与 zone router)

7.9 运维与配置

# 现象(实测) 想请教
Q8 自动均衡每 600 s 一轮迁移 leader(每次 0.97–1.87 s 不可写),并会改掉 --replica-assignment 的手工放置;经 instance_configs 设 autobalancer.controller.exclude.topics 后,40 min 浸泡 p99.99 731.5 → 42.95 ms 频率是否预期(文档称约 1 分钟)?该键是否为受支持的排除方式(不在文档可配键列表中)?能否只关 leader 迁移?
Q22 s3.wal.upload.threshold 经 instance_configs 设 67108864,读回 536870912(STATIC_BROKER_CONFIG);同批另外 3 个键生效,且不报错 是否被控制台模板覆盖?哪些键会被覆盖?
Q25 instance_configs 不能删除已设键(At present, we don't support the removal of instance settings from the 'configs' block …),只能写回默认值 是否计划支持「恢复默认」?写回的值以 STATIC 固化,升级时是否跟随新默认值?
X7 经控制台换 FSx 吞吐档 = 新建 FSx + 两轮全集群滚动,约 53 min,每路 26–35 秒 > 100 ms、最大 2.7–3.1 s,期间两套 FSx 同时计费 是否有更平滑的换档方式?
X6 同一 FSx 上有邻居负载:3,072 IOPS 下全集群零确认 9 s,6,144 IOPS 下 0 s 推荐的 IOPS 余量与 FSx 独占建议?
Q24 重负载尖刺(170–345 ms)的根因我们已定位为 broker 网卡带宽配额超限(bw_in_allowance_exceeded 持续增长) 按网卡基线带宽选机型的建议?每 MiB/s 客户端写入对应的 broker 入 / 出网络倍数?
Q26 推荐配置 2 h 浸泡中孤立的 230–242 ms 尖刺,无周期性;5.5.7 尾部比 5.5.6 略差(p99.99 33.75 → 55.85 ms) 来自哪个后台任务?
Q27 30 GB 历史回读期间,热写路径 max 32.7 → 257 ms 读写是否共用 broker 入向带宽?推荐的读隔离做法?
Q5 恢复期间刷屏 Error while decoding link record(一次 18,077 条) 含义?是否影响恢复时长?

7.10 部署与文档

# 现象 建议 / 想请教
Q14 EC2 部署下 broker 子网同样需要出网(或 SSM 接口端点),文档只对 EKS 写明;无出网时 InitNodeTaskStep 一直重试 文档补充
Q15 FSx 浮动 IP 路由只写入「FSx 创建时 broker 子网所用的路由表」;之后更换路由表,WAL 静默绕行 NAT、不报错(我们因此作废了一段数据) 控制台能否创建后校验,或自动 AddRouteTableIds?
Q16 「EC2 模式最小权限集」缺 s3:PutBucketPolicy、s3:GetBucketTagging、iam:GetPolicyVersion / ListPolicyVersions;建实例时还缺 s3:CreateBucket、route53:CreateHostedZone、iam:CreateRole;iam:PassRole 的 Resource 为 * 更新最小权限集,并收紧 PassRole
Q17 Terraform provider 0.4.10:① 环境变量名 AUTOMQ_BYOC_ACCESS_KEY 与 schema 属性名不一致;② FSWAL 校验把未解析的变量当成缺失;③ networks set 在子网未建时报 Duplicate List Value;④ 后端要求 SG 逐端口放行 9090 / 22 / 9102 / 9103;另 timeouts 不接受 update 修复计划?
Q11 文档写「单分区写 4 MBps,不支持自定义」;实测 1–8 MB/s 各档 0 错误、无节流 限额是否已取消,或仅某些计费模式生效?

8. 5.5.7 已不再复现的问题

如实单列。我们没有拿到修复说明,以下只是「在我们的样本中不再出现」,统计上尚未到确证,希望贵方给出修复说明以便关闭:

问题 5.5.6 5.5.7
Q20 kill -9 后自恢复启动失败(IllegalReferenceCountException: refCnt: 0, decrement: 1 at … S3Storage.startup) 15 次 kill -9 中 3 次 23 次 kill -9 中日志特征 0 次
Q21 kill -9 后 router channel 卡死(The state(3) isn't in state(STARTED)),32–44 min 部分分区不可写、需人工重启 15 次中 3 次 同上 23 次中 0 次
Q3 kill -9 az2 全集群 75–106 s 1 次 默认客户端 23.5 s

9. 问题清单汇总

「影响」只写实测事实;「我们的请求」是希望贵方回复的内容。

编号 问题 影响(实测) 我们的请求
X3 / X1 双 FSx 不切换;失去一套 ≈ 5 min 后不自愈 全集群停写 62–85 s;D2 / D3 需受控重启(2 / 2) 设计目标说明;WAL 避开不可达 FSx;首选节点分 AZ;修复计划
Q30 双 FSx 缩回单 FSx 后 broker 崩溃循环、控制台挂起 一台 broker 永久下线,只能重建实例 是否受支持;正确步骤;修复计划
Q28 FSx 首选 AZ 分区后长连接幂等生产者永久卡死 5.5.7 多分区 2 / 4、单分区 1 / 2 永久卡死 触发条件、修复版本、不降吞吐的规避
— FSx 首选 AZ 故障 = 全集群停写 FIS:三个 AZ 停写 369–376 s 多 AZ 容灾的推荐部署 / 规划
Q29 CPU 背压限 Produce 无故障停写 5–8.6 s,3 / 3 Produce 豁免、阈值 / 开关、机型建议
Q18 S3 不可用即停写 300 s ⇒ 106–136 s,3 / 3 5.5.7 改动说明;恢复 5.5.6 行为或可调上限
Q7 broker ↔ FSx 灰色故障不隔离 停写 = 故障时长 + 约 30 s WAL IO watchdog / 运维建议
Q1 / Q2 / Q23 / Q3 / Q10 kill -9 恢复 15–27 s,调 session 无收益 最大确认最高 34.2 s 时长构成、可调项
Q6 / Q19 / Q12 zone router 放大故障;router_channel 关不掉;WAL 组提交参数 健康分区停 ≈ 60 s(开 zone router 时) 场景建议;服务端关闭方式
Q8 / Q22 / Q25 / X7 / X6 / Q24 / Q26 / Q27 / Q5 运维与配置(§7.9) 见 §7.9 见 §7.9
Q14 / Q15 / Q16 / Q17 / Q11 部署与文档(§7.10) 见 §7.10 文档 / 工具修复
Q20 / Q21 5.5.7 不再复现 — 修复说明

10. 建议的交流方式与我们能提供的材料

建议议程(约 90 min):

  1. 我们介绍场景、方法与覆盖(15 min,§2–§5)
  2. 双 FSx 专章(25 min,§7.1)
  3. Q28 与 FSx 首选 AZ 故障域(20 min,§7.2–§7.3)
  4. Q29、S3 不可用、灰色故障(15 min,§7.4–§7.6)
  5. 其余问题按清单逐条确认(10 min,§9)
  6. 后续:贵方给出修复 / 规避,我们在新版本上按同一方法复测(5 min)

我们能提供的材料(按需,经内部审批后提供):


附录 A:客户端变体与术语

名称 含义
默认客户端 acks=all、enable.idempotence=true、request.timeout.ms=30000、delivery.timeout.ms=120000、client.id=automq_az=<AZ ID>&…(开 zone router)
nr client.id 不带 automq_az=(关闭客户端 zone router)
rt5 request.timeout.ms=5000、delivery.timeout.ms=30000、socket.connection.setup.timeout.ms=2000、metadata.max.age.ms=60000
rt5d 同 rt5,但 delivery.timeout.ms=120000(我们的推荐客户端 = nr + rt5d)
ni 关幂等 + in-flight 1(Q28 的客户端规避)
调优配置 batch.size 256 KiB · zstd(level 1) · in-flight 5
单分区 / 多分区 me-sp-az1(1 分区,leader 在 az1)/ me-orders(24 分区)
D0–D11 双 FSx 阶段的测试编号(§7.1)
停写 / 最大确认 最长连续零确认秒数 / 单条消息最长确认时间

附录 B:开源版的两个观察

我们也测了 AutoMQ 开源版 1.7.4(S3 WAL),这两点供参考:

本页由 Markdown 原文生成(同一份内容,无删改)。

回到顶部