Skip to content

ContainerCacheGuard v0.2.0-rc.8

Pre-release
Pre-release

Choose a tag to compare

@cuipengdba cuipengdba released this 10 Nov 01:42

v0.2.0-rc.8:安全退让后的连续健康恢复

当前为候选版,不是PG14真实业务48小时稳定性验收结果。171未修改,本轮未替换94运行实例。

行为变化

新增recovery_healthy_seconds,默认10秒,0可关闭。enforce一旦出现IO、脏页、业务信号、指标错误、资源预算或其它安全退让,原始保护立即拒绝新释放;恢复正常后,从首个健康样本起累计连续时间。中途异常、人工暂停、时间逆行或采样空窗超过3倍采样周期会重新计时。首次健康启动保持原有warmup和策略,不额外等待。

所有原始保护先执行,恢复门只会拒绝本来允许的动作,绝不会把拒绝改为允许。正常低于目标的IDLE可贡献健康样本,但不会被强制改成回收。临界区显式bounded仍按原策略判断;“健康”仅表示没有触发当前配置的保护,并非证明页冷、业务安全或K8s不会驱逐。

恢复等待也可能增加备份窗口和缓存控制滞后;应在相同负载下评估,而不是无条件把等待调为0。等待期间保留有预算的慢速观察,不承诺完全无CPU或元数据开销。

更可靠的异常解释

新增recovery状态及页面恢复进度,记录风险阶段进入与健康窗口完成次数。恢复期间原因为waiting_healthy_recovery。原始安全判断全部完成后才一次性更新worker授权,避免临时打开后又撤销。

业务信号必须是普通文件,内容为最多16KiB的单个JSON对象,拒绝负p99、多余对象、超大输入、过期和无效数据;FIFO等非普通文件以非阻塞方式打开后立即拒绝,避免等待写入方卡住采样循环。信号写入建议使用原子替换。doctor在实际指标采集失败时返回非零,并保留JSON错误细节,避免检查结果被当成健康。

版本号由源码VERSION统一提供给构建脚本与CI,官方产物仍核对静态ELF、提交号、干净工作区和SHA256。

回归和升级

新增模拟时钟回归覆盖首次启动、连续健康、再次异常、采样空窗、人工暂停、时间逆行、IDLE和原始保护不可绕过。真实Linux文件CLI增加业务信号故障/恢复/再次故障的测试,要求等待期建议量不增加、最终连续健康后恢复且文件SHA256不变。原生amd64/arm64结果见对应发布页和CI。

旧配置会采用默认10秒恢复等待;如需保持原先无等待行为,可显式设0,但应先评估业务代价。保留rc.7程序和配置回退;同一范围不要同时运行两份enforce。新增字段为追加,采集端需允许读取新字段。

本次实际回归结果

源码提交:cd2e350b0dad8ae8328459cfb64308a956de1835。已下载核对原生CI 42735032258原始日志与构建产物。

架构 原生race顶层单测 CLI检查 网页检查 页大小 静态ELF
amd64 40通过,0跳过 12通过 7通过 4096 B 无INTERP/DYNAMIC段
arm64 40通过,0跳过 12通过 7通过 4096 B 无INTERP/DYNAMIC段

首轮CI 42734662425单元测试后在版本格式校验处失败,原因为Windows生成VERSION带CRLF;已规范LF并增加.gitattributes,上表以修正后完整运行结果为准,未将首轮记为全套通过。

产物直接取自本次原生CI,构建提交与源码标签一致,源码构建标记干净。附件含程序、SHA256、中文说明、LICENSE和机器可读测试JSON。本版本没有在171修改配置,也没有替换94运行实例;真实业务48小时和ARM64 64KiB页验收仍未完成。