付同学的技术客栈/

可观测性和容量规划:看不见的问题,最后都会变成事故

所属专题 高并发海量数据系统架构 第 10 篇 / 共 11 篇 查看专题目录

用户说页面慢,客服说订单偶尔失败,运营说活动转化掉了。

开发打开服务器看 CPU,好像还行;看数据库,好像也没完全打满;翻日志,日志很多,但不知道该搜什么。最后大家只能在群里互相问:刚才谁发版了?哪个服务有问题?

这就是没有可观测性的典型状态:系统不是没数据,而是没有能把问题串起来的数据。

可观测性的价值,不是做一个漂亮大屏,而是在故障发生时尽快回答三个问题:哪里坏了,影响多大,为什么坏。

很多容量问题,最早其实都在监控里露过头。

只是当时没人看,或者看到了也觉得“还行”。CPU 偶尔抬一下,慢查询多几条,队列积压几分钟,接口 P95 慢一点,这些信号单独看都不吓人。

等到事故发生后再回头看曲线,大家才会发现它不是突然坏的,是一路变坏的。

所以可观测性不是为了出事以后截图复盘,它更重要的作用,是让团队在出事之前就愿意相信那些不太好看的信号。

现场判断 可观测性不是大屏好不好看,而是出问题时能不能少猜一点。

日志、指标、链路、告警和压测,最后都在回答同一个问题:问题在哪里,影响多大,为什么会发生。

一、日志要能串起一次请求

日志是排查问题最基本的材料。

但日志不是越多越好。没有请求 ID、没有业务关键字段、没有错误上下文的日志,数量再多也很难用。

一次下单请求从网关到订单服务,再到库存、优惠券、支付回调、MQ,如果没有统一 traceId,排查时就只能在一堆日志里碰运气。

日志里也要保留关键业务字段,比如订单号、用户 ID、商品 ID、活动 ID、设备编号、任务 ID。

否则你只知道接口报错,却不知道影响了哪一笔业务。

二、指标要看趋势,也要看尾部

指标适合看系统状态。

常见指标包括 QPS、错误率、平均耗时、P95、P99、CPU、内存、磁盘、连接池、线程池、队列长度、缓存命中率、数据库慢查询。

平均值很容易骗人。

一个接口平均耗时 100ms,但 P99 到了 3 秒,说明已经有一部分用户体验很差。活动系统里,这部分用户可能刚好集中在下单或支付链路上。

高并发系统里,我会特别关注尾部延迟、错误率变化、队列积压、连接池耗尽、缓存命中率下降。这些指标往往比 CPU 更早暴露问题。

三、链路追踪用来定位慢在哪里

微服务多了以后,一个请求可能经过很多服务。

如果只有单个服务日志,很难判断到底是订单服务慢、库存服务慢、数据库慢,还是外部支付接口慢。

链路追踪的作用,是把一次请求的调用路径和每段耗时展示出来。

它能帮你看见:

  • 请求经过了哪些服务。
  • 每个服务耗时多少。
  • 哪个下游拖慢了主链路。
  • 是否出现重复调用或异常重试。

链路追踪不是只有大公司才需要。只要系统开始拆服务,它就会越来越有价值。

排查路径 一次故障排查,最好能从业务影响一路追到具体瓶颈
业务指标 订单失败、支付成功率、转化下降,先确认影响面。
系统指标 P95、P99、错误率、队列积压、连接池耗尽。
链路追踪 看慢在哪一段,是服务、数据库还是外部接口。
日志证据 用 traceId 和业务字段找到具体请求和错误上下文。

没有这条路径,排查很容易变成在群里问“刚才谁动过”。

四、告警要能叫醒人,也要避免吵死人

告警太少,故障没人知道;告警太多,大家会麻木。

好的告警应该关注业务影响,而不是所有技术波动。

核心接口错误率升高、支付成功率下降、订单积压、数据库连接池耗尽,这些比某台机器 CPU 短暂升高更值得优先处理。

告警也要分级。P0 需要马上处理,P1 可以快速响应,P2 可以工作时间处理。否则所有告警都很急,最后等于都不急。

我更喜欢能给出上下文的告警:哪个服务、哪个接口、影响范围、最近变化、关联日志或看板链接。这样值班的人不用从零开始找。

五、压测和容量评估要在事故前做

容量规划不能只靠感觉。

系统能扛多少 QPS,数据库能承受多少写入,缓存命中率下降后会发生什么,MQ 积压到多少开始影响业务,这些最好通过压测和演练提前知道。

压测不只是把接口打到很高 QPS。它应该模拟真实业务比例、数据分布、热点场景、异常场景。

容量评估也不是一次性工作。业务增长、功能变化、数据量变化,都会改变系统瓶颈。系统应该有性能基线,知道正常情况下各项指标大概是什么水平。

没有基线,就很难判断“现在是不是异常”。

六、可以带走的判断清单

  • 日志要有 traceId 和关键业务字段。
  • 指标不要只看平均值,要看 P95、P99。
  • 链路追踪用来定位慢在哪一段。
  • 告警要围绕业务影响分级。
  • 压测要模拟真实业务比例和热点场景。
  • 系统要有性能基线,否则很难判断异常。

看不见的问题,最后都会变成事故。


本系列:

高并发海量数据系统架构 第 10 篇 / 共 11 篇
查看专题目录

留下一条评论

暂无评论