提示:AI 结果必须带引用;若证据不足会提示“未找到可靠证据”。

    下载 Markdown

    云数据库代理网关容量测试报告(2026-02-15)

    测试时间:2026-02-15
    测试对象:/Users/Zhuanz/work-space/cloud-data-proxy
    代码版本:e4a89b0
    测试环境:go1.24.5 darwin/amd64,CPU 标识 VirtualApple @ 2.50GHz

    1. 结论摘要(先看)

    基于当前代码与本次测试口径,单实例协议数据面(PoC)当前可满足的吞吐范围为:

    1. 最低值(本次样本):约 23,339 QPS-cpu 142846 ns/op)。
    2. 最高值(本次样本):约 52,868 QPS-cpu 418915 ns/op)。

    计算公式:QPS = 1e9 / ns_per_op

    注意:该区间来自 协议层端到端基准 + mock executor,不含真实云数据库网络与磁盘 IO。生产真实可用吞吐通常低于该值。

    2. 测试目标

    1. 验证当前版本的功能正确性(测试/静态检查)。
    2. 量化协议面单实例吞吐上下界(最低/最高)。
    3. 给出可复核的执行命令和结果,作为容量评估基线。

    3. 测试范围与口径

    3.1 覆盖范围

    1. 全量单元测试:go test ./...
    2. 静态检查:go vet ./...
    3. 协议面 benchmark:
      • BenchmarkProtocolSelectRoundTrip
      • BenchmarkToMySQLQueryResult

    3.2 不在本报告范围

    1. 未覆盖真实云数据库 IO(当前 benchmark 使用 mock executor)。
    2. 未覆盖多机分布式压测总吞吐(100 万 QPS 需压测集群执行)。
    3. 未覆盖长时间 72h 稳定性实压(另有专项计划)。

    4. 执行命令

    cd /Users/Zhuanz/work-space/cloud-data-proxy
    
    go test ./...
    go vet ./...
    
    go test ./internal/protocol/mysqlproxy \
      -run ^$ \
      -bench 'BenchmarkProtocolSelectRoundTrip|BenchmarkToMySQLQueryResult' \
      -benchmem \
      -benchtime=8s \
      -cpu 1,2,4,8,10
    

    原始输出已保存:/tmp/cdp_bench_20260215.txt

    5. 测试结果

    5.1 功能与质量门禁

    1. go test ./...:通过。
    2. go vet ./...:通过。

    5.2 协议端到端吞吐(核心)

    并发档位(-cpu) ns/op 折算 QPS(约) allocs/op
    1 42,846 23,339 41
    2 28,550 35,026 41
    4 18,915 52,868 41
    8 19,988 50,030 41
    10 20,641 48,447 41

    5.3 结果集构建开销(辅助)

    并发档位(-cpu) ns/op allocs/op B/op
    1 61,008 1606 44,505
    2 48,285 1606 44,506
    4 46,742 1606 44,509
    8 45,037 1606 44,517
    10 45,057 1606 44,520

    6. “最低/最高数据”说明

    你问的“目前这套最低和最高数据”,按当前最关键的吞吐指标(协议面 QPS)解释如下:

    1. 最低可满足:约 2.33 万 QPS/实例(本机样本最保守档位)。
    2. 最高可达到:约 5.29 万 QPS/实例(本机样本峰值档位)。

    如果按更保守的工程口径(预留波动余量),建议把当前单实例可用区间先按 2.0 万 ~ 4.5 万 QPS 估算。

    7. 生产解释与风险

    1. 当前结果是 PoC 链路能力上限参考,不代表真实生产吞吐。
    2. 接入真实 MySQL 后,网络 RTT、锁等待、慢 SQL 会拉低最终 QPS。
    3. 若目标是 100 万 QPS,必须采用多实例 + 分布式压测集群 + 真实数据库压测闭环。

    8. 下一步建议(用于拿到生产真实上下界)

    1. 使用 scripts/qps_1m_protocol_sysbench.sh 在目标环境执行分线程压测。
    2. 增加真实数据库场景(只读、读写混合、热点写)并输出 P95/P99/错误率。
    3. 做 30 分钟稳态压测和故障注入(MySQL 抖动/重连)后再更新“最低/最高”生产值。

    9. 结论

    当前版本在本地单实例基准下,协议面 QPS 的可测区间为 23,339 ~ 52,868 QPS
    该结果可作为“研发基线”,但不能直接当作“生产承诺值”;生产上限仍需真实链路压测确认。