# P6 长期积压与资源曲线样本 日期:2026-09-20。本批验证计划触发在低执行容量下形成**持久化**待执行积压,并连续读取 MySQL 中的任务状态计数。它是单节点、一次性数据库的正确性和趋势样本,不是生产容量、SLA、高可用或百万企业承载结论。 ## 场景和结果 在一个隔离命名空间创建 32 个共享起止时间的固定间隔计划,每个计划 8 个触发点,共 256 个任务。使用 1 个 WSS Worker、容量 1;队列只读快照为并发4、每秒授权10。触发全部落库后,Worker 逐步完成任务,工具整体截止 180 秒,故意让积压样本保留未完成分母。 | 指标 | 结果 | | --- | ---: | | 预期/观察触发点 | 256 / 256 | | 预期/生成任务 | 256 / 256 | | 完成核验成功 | 173 | | 未核验任务 | 83 | | 有效本地处理器调用 | 173 | | 重复调用 | 0 | | 最大观察等待积压 | 249 | | 截止时等待积压 | 83 | | 退出码 | 1(预期的 `RUN_TIMEOUT`) | | 计划收尾 | 32 个 `pause_confirmed=true` | | 数据库最终任务/成功任务 | 256 / 173 | | 触发记录重复任务 | 0 | | 实际外键 | 0 | 原始工具报告:[sample-256-deadline.json](data/phase-6-backlog/sample-256-deadline.json)。工具把 `expected`、`occurrences`、`fired`、`verified_success`、`unverified` 分开;83 个未核验任务没有被解释成失败、撤销或成功。暂停只阻止新的计划触发,不取消已生成任务,因而最终数据库仍保留待处理任务供后续沿原身份核对。 ## 持久化曲线 工具运行期间每 2 秒通过独立数据库连接读取 `pulse_tasks` 状态、触发记录和未暂停计划数量。触发集中完成后,`occurrences` 保持 256;`waiting` 从最高 249 随 Worker 逐步完成下降到截止时 83,`succeeded` 从0增至173。曲线原始点见[curve.json](data/phase-6-backlog/curve.json),最终数据库快照见[database.json](data/phase-6-backlog/database.json)。采样时间仅用于排列趋势,未混入任务阶段延迟统计。 | 采样阶段 | waiting | succeeded | occurrences | unpaused_schedules | | --- | ---: | ---: | ---: | ---: | | 触发前 | 0 | 0 | 0 | 0 | | 触发完成后早期 | 242 | 14 | 256 | 32 | | 中段 | 180 | 76 | 256 | 32 | | 后段 | 98 | 158 | 256 | 32 | | 截止前最后点 | 83 | 173 | 256 | 32 | 本批没有开启指标监听,也没有独占 CPU、内存、磁盘或数据库资源;因此曲线只证明持久状态和收尾行为,不证明资源消耗曲线。后续目标拓扑容量测试需要同时采集数据库连接池、锁等待、CPU、内存、磁盘、复制延迟和队列阶段延迟,并进行多轮稳态与恢复对照。 ## 环境与复现 实际工具链 Go 1.25.14 Linux arm64,通过临时 modfile 构建,仓库声明的 Go 1.27.1 未改;一次性 MySQL 8.4.10,Docker VM 12 CPU/12,529,274,880 字节内存,其他容器可能共享资源。服务端、MySQL 和工具共享容器网络命名空间,不发布宿主机端口。源码/二进制/报告哈希和完整参数见[environment.json](data/phase-6-backlog/environment.json)。该二进制来自已提交的 `2973459`,构建后没有修改源码。 在 SDK 目录使用隔离凭据可复现核心命令: ```sh ORBIT_URL=http://127.0.0.1:$PORT \ ORBIT_CREDENTIALS_FILE=/tmp/schedule-backlog.credentials.json \ ./orbit-schedule-load \ -schedules 32 -requests 8 -workers 1 -capacity 1 \ -start-delay 5s -run-timeout 180s -poll-interval 100ms ``` 准备阶段必须使用一次性 MySQL、`orbit-migrate up`、隔离队列和 `worker-access`/`schedule-access` 权限;不要把这条命令指向生产队列。命令预期在本样本的速率和容量下以非零退出,并在报告中保留未核验分母。收尾后使用 `orbit-admin verify`,再从独立数据库连接检查任务状态和外键数量。完整启动/清理方式按[定时工具手册](../api/schedule-load.md)和仓库一次性 MySQL 脚本约定执行。 本批没有验证长期运行数小时的存储增长、历史归档、跨节点公平、Worker 重连风暴、MySQL 故障切换、备份恢复或 RPO/RTO;这些仍属于 P6/P7 未完成门槛。