技术 / 分析与实践观点

服务器健康,用户却在等:平均速度为何掩盖真相?

尾部延迟、队列和真实用户耗时:平均值之外该测什么,如何避免为错误瓶颈购买容量。

ADArdeshir Daryani··3 分钟阅读
运行中的服务器、用户请求路径与真实应用响应检查的概念图
由人工智能生成的原创概念插图,并非商业产品或实际架构的精确展示。

概念来源: Google SRE Workbook 的监控章节。它说明平均值的局限和延迟分布价值。以下案例与排查方案为独立建议,不是对本站的诊断或产品测试。

用户说页面慢,仪表板却一切正常,两者不一定矛盾。大部分请求快,但用户碰巧进入少见的慢路径,平均值把它掩盖了。

从一个数字走向分布

平均值有助观察部分趋势,却不能描述体验形状。我还会看分位数、请求数和错误。p95 是覆盖大部分测量值的一条边界,不是对每个人的承诺,也不是确定的最坏情况。

指标有什么帮助不能证明什么
中位数测量集合中的典型体验低频路径也健康
p95观察分布中较慢部分不存在慢得多的请求
错误与放弃未完成的工作未调查即可确定根因
队列等待区分等待与执行加 CPU 必然解决

测量群体很重要。排除超时和失败请求,可能让服务纸面更快,实际更糟。样本少时,高分位也可能不稳定。

排队不等于 CPU 占用

假设应用在等待可用数据库连接,主机 CPU 可以很低,用户仍然卡住。队列可能位于代理、连接池、后台处理或外部服务。扩容服务器不一定消除它。

延长响应期限也不是万能药,可能只允许队列变长。我认为应一起设计输入速率、完成容量和拥塞时的决定。

从用户视角追踪请求

  1. 选取搜索或打开报表等重要路径。
  2. 分开记录用户总耗时和应用内耗时。
  3. 用请求标识关联依赖等待与执行。
  4. 在相似负载下比较一项有限变更,同时看错误和质量。

OpenTelemetry 的 Trace 概念是不错的起点。但采样和未埋点阶段会形成盲区,工具不自动代表所有请求。也不应无必要地把敏感信息写进事件。

不要给分位数求平均

多个服务器分位数的平均值,通常不是全部请求的分位数。聚合方法必须适配数据与工具。团队应知道图表使用哪些请求、时间窗口,以及排除了什么。

管理报告也要区分重要路径。把轻量公开页面和重型报表混在一起,可能对任何一种都无法提供合适决策。

实用问题

每次变慢都要加内存或 CPU 吗?

不是。识别出受限资源后,扩容才有意义。连接设置、查询优化或消除重复任务可能更重要,结果需要测量。

一台电脑测试足够吗?

有助排查某条路径,却不能代表不同设备和网络。应结合外部测试、用户数据及服务器观察。

什么时候算排查完成?

同一路径在可比较条件下达到预先约定的改善标准,而且没有把错误或质量问题转移到别处。图变绿不够。

相关阅读:服务器在线与服务真正健康的区别。

来源核查:2026年11月2日。场景和步骤为原创分析,不承诺固定收益,也不指定工具。

通过技术分析,为决策提供更充分的依据。全部文章 →