2026/2/28 17:36:34
网站建设
项目流程
深圳微信建网站,旅行网站首页模板,100个科技小制作,新乡搜索引擎优化别等系统“凉了”才响铃#xff1a;聊聊延迟敏感系统的监控与报警设计
大家好#xff0c;我是 Echo_Wish。
如果你做的是离线数仓#xff0c;昨天的任务今天修#xff0c;问题不大#xff1b;
但如果你碰的是延迟敏感系统——实时风控、实时推荐、在线交易、实时画像、广告…别等系统“凉了”才响铃聊聊延迟敏感系统的监控与报警设计大家好我是 Echo_Wish。如果你做的是离线数仓昨天的任务今天修问题不大但如果你碰的是延迟敏感系统——实时风控、实时推荐、在线交易、实时画像、广告竞价、流计算……一句话总结就是慢 100ms业务可能没感觉慢 1 秒老板开始问慢 5 秒监控还没报警你已经开始背锅了。所以今天我想聊的不是“监控怎么搭 Prometheus”也不是“报警规则怎么写 YAML”而是延迟敏感系统到底应该怎么“盯”才算盯对了。一、先泼一盆冷水大多数系统不是挂死的是“慢死的”我见过太多线上事故都是这种剧本CPU 没爆内存没满QPS 看着也还行服务没 500但是用户开始骂了为啥延迟在悄悄变大而很多系统的监控是这样设计的“只要服务没挂我就当它活着。”这在延迟敏感系统里是致命认知错误。二、什么叫延迟敏感系统别只盯“平均值”一句话定义用户或下游系统对响应时间极其敏感的系统但这里有一个巨坑平均延迟avg latency几乎没啥用举个真实又残酷的例子90% 请求20ms9% 请求200ms1% 请求5 秒平均值算下来可能才80ms监控面板一片绿。但你猜那 1% 是谁高价值用户 / 大客户 / 核心风控请求所以延迟敏感系统第一条铁律别用平均值骗自己三、监控设计的第一原则分位数比均值值钱真正有用的延迟监控至少要盯这几个P50系统“日常体感”P90 / P95开始影响用户体验P99 / P999事故的前兆举个 Prometheus 里常见的 Histogram 用法示意histogram_quantile( 0.99,sum(rate(http_request_duration_seconds_bucket[1m])) by (le) )我自己的习惯是P50看趋势P95设一级报警P99设强报警 自动降级记住一句话P99 是系统良心指标P999 是系统底线。四、延迟不是一个点是一条“链”很多人一提监控就只盯接口延迟。但在延迟敏感系统里这远远不够。一次请求的延迟往往长这样入口 → 网关 → 服务A → MQ → 服务B → 存储 → 返回你只盯“总耗时”等报警了你只会懵“慢了但慢在哪”所以监控设计要拆链路。我强烈建议至少拆成三层1️⃣ 接口级延迟用户视角API / RPC / HTTPP95、P992️⃣ 关键中间件延迟MQ 堆积时间Kafka consumer lagRedis / HBase / ES 响应时间3️⃣ 内部处理阶段延迟埋点简单示意一下代码里的做法伪代码longt1System.currentTimeMillis();fetchFromCache();metric.record(stage.cache,System.currentTimeMillis()-t1);longt2System.currentTimeMillis();queryDB();metric.record(stage.db,System.currentTimeMillis()-t2);别嫌麻烦这种埋点事故时能救命。五、报警不是越多越好是“该响才响”说句得罪人的话80% 的报警系统最后都会被静音为什么半夜响白天响周末响啥都响还经常是误报最后的结局就是真正出事的时候大家已经对报警免疫了我自己总结的报警三原则原则一报警要“贴业务”不要只报“P99 延迟 2s”而是“支付接口 P99 延迟 2s影响订单成功率”人是对业务损失敏感的不是对指标敏感。原则二报警要有“持续性”瞬时抖动没必要把人叫醒。推荐逻辑连续 3 分钟或 5 分钟内 4 次超阈值示意规则P99_latency 2000ms 持续 3 分钟原则三报警要分级我一般这样分P95 超阈值钉钉 / 飞书提醒P99 超阈值电话 / 短信P999 QPS 下降自动降级 全员拉群不是每个问题都值得把人从床上叫起来六、延迟报警必须配“自救机制”这是我非常强调的一点没有自愈能力的报警只是在宣布你要加班了延迟敏感系统至少要准备自动熔断自动降级超时快速失败兜底结果比如if(latencyP99threshold){enableFallback();}哪怕兜底结果不完美也比一直卡着强。七、我自己的一个真实感受说点不那么“技术”的。刚开始做实时系统那几年我也迷信“机器指标”CPU、内存、磁盘一把抓。后来被线上事故教做人后才明白用户感受到的慢才是真正的慢。监控和报警不是为了好看不是为了 KPI而是为了让问题早点暴露让人更从容地处理让系统别把锅甩给值班的人八、写在最后如果你现在正在做、或者即将做延迟敏感系统我送你三句话别信平均值多看分位数别只看结果要拆链路别只会报警要能自救