性能与容量配置
决策批次时限、求解并发度、批量大小、硬超时与降级阈值、容量水位与扩容阈值;压测基线与实测值对照;性能监控指标与告警阈值;大促 / 旺季容量预案。核心口径:配置值、实测值、余量、阈值四列并排看。
!非功能要求(S6)与求解性能(O15)在本页合流:配置值只看一半,必须与实测值并排看。本页所有参数都给出“实测(近 30 批次)+ 余量 + 告警阈值”,因为决策批次的最大风险不是“配得小”,而是配置值与真实规模脱节——业务量涨上去了,参数还是上线时的值。
决策批次时限
5分钟
SLA 600 秒,配置值 300 秒
P95 求解耗时
312秒
较配置值超 12 秒(已告警)
CPU 峰值
82%
26.2 / 32 核;严重阈值 92%
内存峰值
18.4GB
占 32 GB 的 57.5%
容量水位
46.8%
14,968 / 32,000 行(扩容阈值 64%)
本月超时 / 降级
0 / 1次
降级发生在 10-19 换店下沉批次
决策批次运行参数(配置值 vs 实测值)
配置值 + 实测 + 余量 + 阈值,四列并排看才叫容量管理| 参数 | 参数编码 | 配置值 | 实测(近 30 批次) | 余量 | 告警阈值 | 生效方式 |
|---|---|---|---|---|---|---|
| — | — | — | — | — | — | — |
| — | — | — | — | — | — | — |
| — | — | — | — | — | — | — |
| — | — | — | — | — | — | — |
| — | — | — | — | — | — | — |
| — | — | — | — | — | — | — |
| — | — | — | — | — | — | — |
| — | — | — | — | — | — | — |
共 28 项运行参数;本页展示 8 项,其余在 sys-param 的性能与容量分组维护每页
i两处必须对齐的关系:sys-param 存配置值(谁改的、何时生效),本页存配置值 + 实测值与余量(够不够用、要不要扩容)。任何参数只要余量 < 10% 或实测超配置值,就自动进入“容量待办”。
压测基线(候选池 1.5 万行 → 设计上限 80 万组合)
压测不是一次性动作,新版本发布前必须重跑| 压测场景 | 候选池行数 | SKC × 门店 | 并发 | 求解耗时 | CPU 峰值 | 内存峰值 | 目标(≤ 5 分钟) | 结论 |
|---|---|---|---|---|---|---|---|---|
| — | — | — | — | — | — | — | — | — |
| — | — | — | — | — | — | — | — | — |
| — | — | — | — | — | — | — | — | — |
| — | — | — | — | — | — | — | — | — |
| — | — | — | — | — | — | — | — | — |
压测结论:目标 5 分钟内在 12 万行/子网以内成立;超过必须拆网并降级,不允许整批进 MILP每页
- 基线场景
- 候选池 14,968 行 / 382 SKC × 85 门店 / 并发 4 → 252 秒(4 分 12 秒)
- 目标
- 单批次 ≤ 5 分钟(300 秒),SLA 上限 600 秒
- CPU 峰值
- 82%(26.2 / 32 核)@ 当前规模;2 倍规模升至 94%
- 内存峰值
- 18.4 GB @ 当前规模;2 倍规模 27.6 GB;20 万行单子网会内存溢出
- 最慢环节
- L4 局部 MIP 精修 63 秒(占 25%),单子网时限 60 秒已临界
- 推荐配置
- 32 核 / 32 GB / MIP 许可 4 并发;大促期建议 2 节点(拆网后并行)
性能监控指标与告警阈值
每个阈值都要有“自动处置”,否则只是数字| 监控指标 | 采集方式 | 当前值 | 预警阈值 | 严重阈值 | 自动处置 |
|---|---|---|---|---|---|
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
共 18 个监控指标(本页展示 8 个);全部接入 mon-sla 与告警中心(G1 / G2)每页
容量水位与扩容阈值
水位是趋势判断,不是当前快照- 扩容触发条件
- CPU > 85% 连续 3 批次;或候选池 > 32,000 行(水位 64%);或批次 P95 > 480 秒
- 扩容动作
- 求解并发 4 → 6 → 拆网细化 → 增加 1 台 32 核节点(三档递进)
- 审批
- 系统管理员 + 运维负责人双签;紧急扩容可先执行后补审批(2 小时内)
- 演练
- 每季度一次全链路扩容演练(含拆网参数切换与降级验证)
大促 / 旺季容量预案
预案要写清谁在什么时间做什么,而不是“加大资源”| 阶段 | 时间窗口 | 预计规模 | 预案动作 | owner | 状态 |
|---|---|---|---|---|---|
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
预案以“阶段 + 时间窗口 + 预计规模 + 动作 + owner”组织;每次大促后必须回填预案有效性评估每页
超时、降级与限流策略
① 单子网超时(> 60 秒)
该子网降级为贪心解,其余子网正常求解;结果行标记“降级启发式解”,强制人工复核
② 批次数超时(> 300 秒)
停止 MIP 精修,直接输出当前可行解;通知 owner(钉钉 + 短信)并写入批次台账
③ 内存超限(> 28 GB)
中间解落盘 + 拆网粒度细化;> 30 GB 主动中止该子网,避免整机 OOM
④ 下游限流(ERP / WMS)
退避重试并降速至配额 80%,必要时改批量下发(携带同一幂等键)
⑤ 断点续跑
分步落盘(取数 / 清洗 / 求解 / 出单),失败从最近成功步骤续跑,不从头再来
⑥ 重跑幂等
重跑携带同一幂等键,下游按业务键 upsert,不产生重复单据(X13)
降级必须可见
降级方案与正常方案在决策表里必须可区分(标注“降级启发式解 + 未达 gap 目标”),并强制人工复核。最怕的是降级了业务看不出来,把近似解当成最优解执行。
批次时限达成情况(近 30 批次)
时段分布 + 明细,才看得出趋势| 批次 | 场景 | 耗时 | 是否降级 |
|---|---|---|---|
| B20251021-D01 | 日常补货 | 252 秒 | 否 |
| B20251021-T01 | 区域调拨 | 198 秒 | 否 |
| B20251021-R01 | 残码清理 | 164 秒 | 否 |
| B20251019-S01 | 换店下沉 | 318 秒 | 是(贪心解) |
| B20251018-D01 | 日常补货 | 287 秒 | 否 |
资源与瓶颈
- 应用节点
- 1 × 32 核 / 32 GB(求解 + 调度同机部署)
- 数据库
- PostgreSQL 14 · 8 核 / 16 GB,日增 ~ 420 万行流水
- 缓存
- Redis 6 · 4 GB,库存 ATP 命中率 96.4%
- 存储
- 对象存储 3 TB(快照 + 导出文件 + 留痕),水位 64%
- 外部瓶颈
- ERP 取数限流 60%–80%(并发度上限的实际来源)
- 许可
- MIP 求解器 4 / 8 个实例,大促需临时扩许可
非功能要求(S6 全景)
| 维度 | 要求 | 当前 |
|---|---|---|
| 性能 | 决策批次 ≤ 5 分钟 | P95 312 秒 |
| 可用性 | ≥ 99.5%(批次时窗内 99.9%) | 99.62% |
| 安全 | 等保 2.0 三级基线 | 差距 3 项 |
| 数据留存 | 决策留痕永久、日志 3 年 | 已配置 |
| 多租户 | 多品牌数据隔离 | 单品牌运行 |
| 信创适配 | 国产 OS / DB 适配 | 未开始 |
i设计说明(S6):容量页最容易写成“服务器配置清单”。真正的差异是把配置值、实测值、余量、告警阈值与扩容动作放在同一张表里,并且让“压测基线”成为发布前的强制卡点 —— 新算法版本、新参数集、大促预案都必须重跑压测并回填本页,否则容量管理永远滞后于业务量。