晚上 8 点改 http.timeout 的值,把 3000 手误写成 300,保存后 2 分钟内网关 504 比例从 0.2% 涨到 63%,订单接口几乎全超时。回滚花了 11 分钟。乍看像缓存或者权限的锅,追下去往往不是。
curl -X POST http://config:8080/release -d 'dataId=gateway.yaml&value=timeout:300'
# 期望被校验拦截 实际返回 200
curl -s -o /dev/null -w '%{http_code}' https://api.example.com/health
追下去是这么回事:配置中心默认发布即全量,没有灰度环境也没有审批环节。超时这类基础参数没有做范围校验,300 毫秒对下游的 P99 来说明显不够。
「配置改错全站异常」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。
具体做法是,基础配置走灰度 先推 1 台观察 10 分钟;发布前做取值范围校验 低于 1000 毫秒直接拒绝;关键配置加二次确认和变更窗口 避开高峰。
验收就看一点,改造后再推 300 毫秒被校验拒绝,504 比例保持在 0.2% 附近没有波动。
