你的网站即将崩溃的5个迹象
泰坦尼克号并非瞬间沉没。首先是撞击,然后是货舱进水,最后才是——灾难。你的网站也是一样。在崩溃很久之前,它就在“大声”呼救。你知道如何解读这些信号吗?
要点。 网站不会凭空倒下:先是 TTFB、数据库连接池、swap、5xx 上升或日志沉默。Prometheus/Zabbix 告警应早于客户的愤怒消息。
检查清单:即将死亡的症状
*如果你在日志中看到这个——请致电 NineLab。
1. TTFB 增长 (Time to First Byte)
如果服务器在给出第一个字节之前思考超过 200 毫秒——这是第一个警钟。这意味着代码或数据库已经在极限工作。
2. 数据库中的“连接太多” (Too many connections)
每个 SQL 请求都需要一个连接。如果池已满,新用户只会得到一个错误。这是一个经典的扩展问题。
3. 磁盘交换 (Swap)
最可怕的迹象。当 RAM 用完时,服务器开始使用硬盘作为一个内存。磁盘比 RAM 慢 100,000 倍。网站瞬间变成了南瓜。
4. 5xx 错误的增加
通过每天一个 500 错误是偶然的。每小时十个错误是一种模式。总流量的 1% 错误是一场火灾。
5. 日志沉默 (Log Silence)
听起来很奇怪,但如果日志突然停止写入,也许你只是磁盘空间用完了。这是“无声的死亡”。
建议: 在 Zabbix 或 Prometheus 中配置警报。在你的用户写愤怒的推文之前了解问题。
下一步
网站即将宕机的征兆 — 常见问题
TTFB 超过约 200 ms、数据库连接池快满、用 swap 当内存、5xx 约占流量 1%,以及日志突然沉默(常常是磁盘满了)。 这些出现在 503 之前,而不是已经挂掉之后。
若基线约 100–120 ms,服务器在第一个字节前想超过约 200 ms,代码或数据库已到极限。800 ms 不是「稍慢」,而是故障前的排队。
RAM 耗尽后磁盘变成「内存」,速度差几个数量级。站点会突然变慢:超时、502、postgres 被 OOM 杀掉。
别等广告高峰:先上 Zabbix/Prometheus 告警,检查连接池、磁盘和内存,再做审计或压测。每小时十个 500 已是规律,不是偶然。