打开网页慢是内存还是cpu
「打开慢,是不是内存不够,还是 cpu 太差?」
打开网页慢是内存还是cpu,先别猜。这两样只能在五段里的一段体现,其他四段跟它们没关系。下面这张表先分一次。
| 现象 | 指向 | 先看什么 |
|---|---|---|
| ttfb 长、下载短 | 服务端在算 | 进程、内存、cpu、数据库 |
| ttfb 正常、下载长 | 体积与带宽 | 总字节数、请求数 |
| 前三段长 | 解析与线路 | dns、tcp、tls |
| 五段都短还慢 | 本机渲染 | 扩展、第三方脚本 |
ttfb 长,才轮到怀疑内存和 cpu
<figure><img src="https://image.bt.cn/20261114/c498960a8b69b207080cc06e2425bab4.svg" alt="五段耗时各占多少,ttfb 占了几成" loading="lazy" width="1200" /><figcaption>先看 ttfb 占几成,再决定动内存还是 cpu</figcaption></figure>
ttfb 从请求发完算到收到第一个字节。这一段长,说明请求到了、服务器没在时限内回话。
判据是 ttfb 占五段之和的一半以上,同时下载段很短。两条同时成立,再去翻内存和 cpu。一半是经验线。
内存不够,通常不会只表现为慢
内存吃紧往往先表现在别处:进程被系统杀掉、偶发 5xx、重启后短暂恢复。容器里则是实例被重启或 OOM。
判据是同一时段有没有 5xx,或者进程有没有重启记录。有,才谈得上内存。
只看「慢」这一条,分不出是内存还是 cpu。这一点最容易看错。
用宝塔拨测的网站测速跑一次,五段耗时是分开列的,先看最长那一段,再看它占几成。
cpu 打满,看的是慢随并发一起上升
cpu 吃紧的典型是:低峰正常、高峰变慢,而且慢得很平均,每个请求都慢一点。
判据是低峰和高峰各跑一次,两次的 ttfb 差多少。差出一倍以上,才像 cpu。一倍是经验线。
那么先看并发数和进程数,再看单请求耗时。
前三段长、下载长,都跟内存 cpu 无关
dns 长是问路慢,tcp 长是握手慢,tls 长是协商慢。下载长是体积和带宽,也不是这两样。
判据是这三段占了多数,或者下载段占了多数。占了,改内存和 cpu 一点用没有。
先看 ttfb 占几成,再决定要不要动内存和 cpu;前三段长或下载长,就别在这两样上花时间。