# P6 定时集中触发测量 日期:2026-09-20。本批新增独立 SDK 命令 `orbit-schedule-load`,完成多个固定间隔计划同一时刻触发、真实 Worker 执行和持久结果核验。P6/P7 仍进行中;样本不作为生产容量或高可用结论。 ## 已实现与实际检查 计划先暂停创建再恢复,固定起止/间隔、版本 1、UTC 时区快照、CATCH_UP/PARALLEL;每任务只有一次尝试。工具核对预期时间槽、触发唯一性、任务身份/模板/结果、成功尝试和时间顺序、固定来源及本地单次调用,并等待计划耗尽。所有退出路径执行有限 Worker 收尾和计划暂停;传输不明不换键重试,保留原操作身份。 初次真实连接发现工具误把 API `v1` 当成时区快照标识,修正为保存服务端返回的具体标识和版本生效时间,后续读取核对不变。下表和原始文件全部来自修正后**重新构建并运行**的二进制;首次失败的创建发生在另一已清理的一次性数据库,不计入最终样本。 SDK 全模块 `go test -race ./...`、`go vet ./...`、`go build ./...` 通过,完整依赖图没有服务端或 MySQL 驱动依赖。新增单测覆盖等待不算成功、重复轮询不重复计数、错配输入/来源/历史/时间、跨计划重复任务、本地并发重复调用、暂停明确冲突与传输不明的处理差异、原时区快照/生效时间不变及部分分母。标准 `scripts/test-mysql.sh` 已接入工具编译和 2×3 触发样本,脚本语法检查通过;本批没有重新跑整份标准集成脚本。 ## 环境与结果 一次性 MySQL 8.4.10,1 个 Orbit 进程,1 个测量进程中 2 个 Worker 连接。共享本机 Docker VM,12 个 CPU、12,529,274,880 字节内存,无独占资源额度;其他工作负载可能影响结果。队列并发上限 4、每秒开始授权上限 10,工具未修改配置;指标监听关闭。Go/MySQL 容器共享网络命名空间,仅本机回环通信,无宿主机发布端口。 实际工具链是 **Go 1.25.14 Linux arm64**,通过临时 modfile 使用,仓库声明的 Go 1.27.1 未改。本批不能替代正式工具链全量验收。精确配置、源码/二进制哈希、退出码和原始文件哈希见[环境清单](data/phase-6-schedule-load/environment.json),SDK 输出见[检查日志](data/phase-6-schedule-load/sdk-check.log)。 | 样本 | 预期触发 | 已观察/生成任务 | 已核验成功 | 本地调用/重复 | 结果 | | --- | ---: | ---: | ---: | ---: | --- | | 4计划×6次,1秒间隔 | 24 | 24/24 | 24 | 24/0 | `complete=true`,退出0 | | 32计划×4次,1秒间隔 | 128 | 128/128 | 128 | 128/0 | `complete=true`,退出0 | | 2计划×12次,1秒间隔,整次仅5秒 | 24 | 6/6 | 2 | 2/0 | `RUN_TIMEOUT`,`complete=false`,退出1 | 原始结果:[24次](data/phase-6-schedule-load/sample-24.json)、[128次](data/phase-6-schedule-load/sample-128.json)、[截止负例](data/phase-6-schedule-load/deadline-24.json)。正常组各有两个 Worker,每个容量4;负例每个容量2。正常组预留5秒设置,整体截止90秒;负例预留1秒设置,整体截止5秒。每次HTTP截止5秒,轮询100毫秒。 | 正常样本 | 触发延迟P95 | 排队至授权P95 | 授权执行P95 | 计划时间至完成P95 | | --- | ---: | ---: | ---: | ---: | | 24次 | 2005.396ms | 2126.701ms | 21.111ms | 4067.032ms | | 128次 | 1964.089ms | 14277.183ms | 20.414ms | 16200.649ms | 32 个同时触发的计划在现有并发/速率限制下形成排队,上表记录这次现象;未做控制变量或持续资源采样,不能据此判定瓶颈或推导生产吞吐。耗时分布均由持久时间计算,分母分别为24和128,只包含已核验成功任务。 负例保留18个未观察到的计划触发点、4个已经触发但未核验成功的任务,没有把超时隐藏为成功。`pause_confirmed` 在全部计划中为真;暂停不取消已生成任务。测量后独立数据库回读共有38个计划且全部暂停、158个触发记录、158个任务,其中154个成功,触发记录间重复任务数0;其余4个任务没有被该样本核验为成功,不能推测为已撤销或最终失败。见[数据库快照](data/phase-6-schedule-load/database.json)。 `orbit-admin verify` 独立确认 schema version28、28条迁移记录、6个必需索引和**实际外键0**,见[结构核验](data/phase-6-schedule-load/schema.json)。本批未修改数据库模型或迁移;不可变旧迁移仍保留历史外键及其前向清理记录。 ## 复现与下一步 按[工具手册](../api/schedule-load.md)创建隔离命名空间/队列,签发 Worker 与计划权限,依次运行环境清单中的三组参数;前两组应退出0,第三组应退出1并报告剩余分母。使用新创建的一次性MySQL、当前源码构建的服务端和测量工具,最终执行 `orbit-admin verify`。校验时不得把源码修改后的哈希附到之前构建的二进制结果。 当前只验证同节点、固定间隔、有限计划数的集中触发和超时收尾。Cron/DST及其他策略的功能测试已有独立记录,本批未做这些场景的容量测量。长期积压样本已由[单独报告](phase-6-backlog.md)补充;下一步继续指标采集对照、长期存储增长、慢消费者/重连风暴、目标数据库拓扑与正式工具链/版本兼容门禁。