GoForum🌐 V2EX

被 Cloudflare 522 教育了一次:一次完整排查记录(含判断思路)

muslim31214 · 2026-02-17 11:27 · 0 次点赞 · 3 条回复

最近线上一个站点频繁出现 Cloudflare 522,刚开始以为是服务器资源不够,结果一路排查下来发现根本不是这么回事。

这篇记录把整个排查过程、判断逻辑、容易误判的点、以及最终原因梳理一下,给遇到类似问题的朋友一个参考。


一、522 到底是什么?

Cloudflare 官方解释:

522 = 连接源站超时( Connection timed out )

本质是:

  • Cloudflare 节点已经接收到用户请求
  • Cloudflare 尝试连接你的源站服务器
  • 在规定时间内没有完成 TCP 建立

也就是说:

不是 Cloudflare 问题,是 Cloudflare 到你服务器之间的链路出问题。

重点是:

不是页面慢,是“连不上”


二、常见误区

很多人第一反应是:

  • 服务器挂了?
  • CPU 100%?
  • 内存爆了?
  • Nginx 崩了?

但实际上 522 更多时候和以下有关:

  1. 源站防火墙拦截了 Cloudflare IP
  2. 源站带宽跑满
  3. TCP backlog 满
  4. 丢包严重
  5. 线路回程异常
  6. 云厂商侧网络抖动

服务器本身未必有问题。


三、第一步:确认服务器是否“真的挂了”

先从最简单的开始。

在服务器上执行:

top

看:

  • CPU 是否打满
  • load average 是否异常
  • 是否有异常进程

然后:

free -m

确认内存没有被打爆。

接着看 Nginx:

systemctl status nginx

如果 nginx 正常,CPU 正常,内存正常,说明:

服务器没挂


四、第二步:是否防火墙拦了 Cloudflare

Cloudflare 有固定 IP 段。

可以用:

iptables -L -n

或者

ufw status

确认没有限制 CF IP 。

有时候 fail2ban 会误封。


五、第三步:是否 TCP 队列满

这一步很多人忽略。

查看:

netstat -an | grep SYN_RECV | wc -l

如果大量 SYN_RECV ,说明半连接队列爆了。

再看:

sysctl net.core.somaxconn

如果值太小(默认 128 ),在高并发下可能不够。

可以调整:

net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535

六、第四步:是否带宽跑满

执行:

iftop

如果带宽已经满载,比如 100M 打满。

Cloudflare 连过来就会超时。

很多人忽略:

100M 带宽在高峰时段其实很容易满。

尤其是:

  • 视频站
  • 下载站
  • 被扫站

七、第五步:用 mtr 看丢包

这是关键。

在本地执行:

mtr -rw 你的服务器 IP

看:

  • 是否某一跳开始丢包
  • 是否晚高峰严重
  • 是否回程绕路

有一次排查发现:

回程绕美西

延迟从 20ms 变成 180ms 。

Cloudflare 到源站那一段开始丢包。

服务器本身完全正常。


八、真实案例:问题不在服务器

那次问题最终定位:

  • CPU 20%
  • 内存正常
  • nginx 正常
  • 带宽没满
  • TCP 队列正常

但 mtr 显示:

某骨干节点开始 20% 丢包。

而且:

晚上 8 点之后必出 522

典型线路拥堵。


九、Cloudflare 522 和 524 的区别

很多人混淆。

  • 522:TCP 连不上
  • 524:连上了,但响应超时

524 更像后端慢。 522 更像网络层问题。


十、如何系统判断 522 原因?

我后来总结一个判断流程:

1️⃣ 本机资源正常? 2️⃣ nginx 是否监听? 3️⃣ 防火墙是否拦 CF ? 4️⃣ TCP 队列是否满? 5️⃣ 带宽是否满? 6️⃣ mtr 是否丢包? 7️⃣ 是否固定时间段出现?

只要按顺序走,不会乱。


十一、一个关键点:线路稳定性比延迟更重要

很多人只看 ping 延迟。

其实:

稳定性 > 低延迟

20ms 但偶尔丢包,比 40ms 稳定更糟。

尤其是被 Cloudflare 代理后,回程异常更容易触发 522 。


十二、几个实用优化建议

① 开启 keepalive

keepalive_timeout 65;

② 调整 worker_connections

worker_connections 65535;

③ 调整系统文件数

ulimit -n 100000

④ 合理选择线路

这个真的比堆配置重要。


十三、结论

522 不等于服务器不行。

大多数时候是:

  • 网络层问题
  • 带宽瓶颈
  • 回程异常
  • 丢包

真正需要学会的是:

用数据判断,而不是凭感觉。


十四、我的教训

那次我第一反应是:

加配置

结果完全没用。

真正解决问题的是:

换了一条更稳定的线路

服务器规格没变。

问题消失。


如果有人最近也在被 522 折磨,可以按上面的顺序排查。

别一上来就重装系统,也别盲目升级配置。

大概率不是你想的那个问题。

3 条回复
aojunhao123 · 2026-02-17 12:22
#1

能不能别把 ai 糊的屎喂给大家

allplay · 2026-02-17 12:32
#2

@aojunhao123 稍微写得有点规矩就是 ai ?

cnrting · 2026-02-17 13:07
#3

这一看就是 gpt 生成的辣雞啊

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: muslim31214
发布: 2026-02-17
点赞: 0
回复: 0