长HTTP请求阻塞同域新请求,换浏览器/隐身模式恢复(疑Cloudflare相关)
问题排查与解决方案
1. 长HTTP请求阻塞同域新请求问题
现象
- 执行耗时请求(如phpMyAdmin慢查询、大文件上传)时,同域新请求完全无响应,直到长请求结束
- 同一浏览器的新标签页/窗口访问同域网页失效,但隐身模式或其他浏览器可正常访问
- 已排除服务器过载问题,所有涉事站点均使用Cloudflare反向代理
可能原因
- PHP会话锁机制:PHP默认会在会话启动时锁定会话文件,直到请求结束才释放。如果长请求持有会话锁,同域其他请求(因自动尝试启动会话)会被阻塞,这和你提到的相关问题描述一致
- Cloudflare连接复用叠加效应:浏览器与Cloudflare之间的HTTP/2连接复用可能被长请求占用连接槽位,再加上会话锁的影响,进一步放大了阻塞问题
解决建议
- 优化PHP会话锁:
- 对不需要修改会话数据的请求,尽早调用
session_write_close()释放锁 - 改用Redis/Memcached等分布式会话存储,避免文件锁带来的阻塞
- 对不需要修改会话数据的请求,尽早调用
- 调整Cloudflare配置:
- 开启站点的HTTP/3(QUIC)功能,它的多路复用机制比HTTP/2更不易被单请求阻塞
- 确认Cloudflare的"HTTP/2 Multiplexing"设置未被意外关闭
- 浏览器端验证:在Firefox中禁用HTTP/2(将
network.http.spdy.enabled.http2设为false),测试是否仍出现阻塞,以此区分是服务器会话锁还是浏览器/Cloudflare的连接问题
2. x.com及关联域名随机无响应问题
现象
- x.com、子域名a.x.com及同顶级域的b.com会随机停止响应
- 各域名由不同国家/数据中心的独立服务器提供服务,部分仅提供静态文件(无应用层会话)
- 已排除源服务器配置问题,所有涉事域名均使用Cloudflare反向代理
可能原因
- Cloudflare节点集群异常:同顶级域的域名可能被分配到同一Cloudflare节点集群,若节点出现临时故障或网络波动,会批量影响关联域名
- Firefox浏览器缓存/连接池异常:浏览器对同顶级域的DNS缓存或持久连接池出现问题,导致所有关联域名的请求无法正常发起
- Cloudflare TLS会话复用异常:跨子域名的TLS会话复用出现故障,导致连接建立失败
解决建议
- Cloudflare侧排查:
- 查看Cloudflare后台的"Analytics"和"Traffic"面板,检查是否有节点异常、流量突增或错误率上升情况
- 临时将部分域名的Cloudflare代理模式切换为"DNS Only",测试是否仍出现无响应,验证是否为Cloudflare代理层问题
- 浏览器侧排查:
- 在Firefox中清除DNS缓存(打开
about:networking#dns页面点击"Clear DNS Cache"),并重置网络设置(打开about:support页面点击"Refresh Firefox") - 用其他浏览器测试,若仅Firefox出现问题,可禁用浏览器的TLS会话复用(将
security.ssl.enable_session_tickets设为false)尝试解决
- 在Firefox中清除DNS缓存(打开
- 域名配置调整:
- 为不同子域名开启Cloudflare的"Always Online"功能,降低节点故障带来的影响
- 临时尝试更换部分域名的Cloudflare"SSL/TLS加密模式"(比如从"Full"切换到"Flexible",注意安全风险,仅用于验证)
内容的提问来源于stack exchange,提问作者kataba
相关产品推荐
相关产品推荐

