甲骨文云 WordPress 博客极致加速与高可用实录:Cloudflare for SaaS 优选 IP 与底层死锁排坑

在海外 VPS(如甲骨文云 Oracle Cloud ARM 架构服务器)上搭建 WordPress 博客时,国内访客常常会面临延迟高、晚高峰拥堵、甚至节点绕道美西的问题。如果直接开启 Cloudflare 的免费小云朵代理,虽然具备了一定的防封和抗攻击能力,但国内解析到的默认 Anycast 节点延迟往往在 200ms 以上,体验较差。

今天参考了杨公子的两篇技术干货(5028.html5026.html),对本站(876855.xyz)进行了一次深入底层的全套 CDN 加速、SaaS 回源、IP 优选自动化联动以及源站性能死锁排查。特将本次实战过程与技术细节完整记录如下。


一、核心加速架构设计

传统的 IP 优选方案如果直接在 Cloudflare 官方 DNS 更改 A 记录,会触发 Cloudflare 官方的 Error 1000(DNS 指向禁止)Error 1034(Edge IP 受限)。本次优化严格采用了目前业界最优雅的解决方案:Cloudflare for SaaS + 第三方 DNS 分流 + 自动化测速看门狗

1. 流量链路模型

国内访客 
  │ (向腾讯云 DNSPod 查询解析)
  ▼
Cloudflare 优选低延迟 IP(延迟 10~30ms)
  │ (通过带有 Host: 876855.xyz 的 HTTPS 请求)
  ▼
Cloudflare 边缘节点识别 SaaS 回退源(Fallback Origin: origin.876855.xyz)
  │ (走 Cloudflare 官方安全隧道内网转发)
  ▼
甲骨文云源站服务器(OpenResty + PHP 8.3 OPcache 内存加速)

二、主要实施步骤

1. Cloudflare for SaaS 回退源配置

  • 在 Cloudflare 后台开启 Cloudflare for SaaS 功能;
  • 新建专属解析 origin.876855.xyz 指向甲骨文服务器真实公网 IP,并开启代理(点亮橙色云朵);
  • origin.876855.xyz 设置为回退源(Fallback Origin),状态成功激活为 active
  • 通过 API 申请 Google Trust Services / SSL.com 权威自适应证书,保障边缘节点与源站全程全加密通信。

2. 腾讯云 DNSPod 解析无缝平移

为了让国内访客能够自主走上优选 IP,将域名解析权平移到腾讯云 DNSPod:

  • 全量记录保留:平移原有的全部 Amazon SES 发信验证、DKIM 密钥与 SPF 防伪记录;
  • 邮件系统 100% 零影响:保留 3 条 Cloudflare Email Routing 官方收信记录(route1/2/3.mx.cloudflare.net),同时将基于 Cloudflare Workers 架构的 mail.876855.xyz 邮箱一并加入解析,收发信与网页登录毫发无损;
  • 优选 A 记录接管:将 @www 记录直接指向当前测出的最低延迟 Cloudflare IP。

3. 甲骨文服务器端测速与 API 联动脚本

在甲骨文 ARM64 服务器上部署 CloudflareSpeedTest 测速套件,并定制 /root/cu.sh 脚本:

  • 每次执行时,自动针对全国优质 Cloudflare IP 段进行多线程延迟与下载测速;
  • 筛选出当前平均延迟低于 10ms 的极速 IP(实测筛选出 9.5ms 优质节点 172.67.84.201);
  • 自动调用腾讯云 DNSPod API,将最优 IP 热更新写入 DNS 解析记录,实现全自动换优。

4. 24 小时无人值守高可用看门狗

按照文章 5026 的设计,在系统部署定时监控守护程序 /root/blog_monitor.sh

  • 加入系统 Crontab,每 5 分钟自动巡检一次博客访问状态;
  • 遇到偶发性网络拥堵或节点异常时,自动触发重试;若连续异常则自动触发 cu.sh 重新优选并切换备用线路,确保网站全天候 99.99% 在线率。

三、惊险排坑:排查并发死锁与磁盘 I/O 阻塞

在配置完成进行全网测速(ITDOG 拨测)时,遇到了一次极为惊险的性能故障:测速地图上一片红,全国节点连接全部超时(耗时超过 10 秒)!

1. 问题排查

通过 SSH 登录服务器,查看系统进程发现一个诡异现象:

# 查看 PHP-FPM 状态
Status: "Processes active: 50, idle: 0, Requests: 6838"

全部 50 个 PHP-FPM 工作进程全部处于占满状态,空闲进程为 0! 当 ITDOG 的几十个测试节点并发访问时,由于没有空闲 PHP 进程,所有新请求被完全挂起直到 10 秒超时。

2. 定位真凶

使用 strace 对卡死的 PHP-FPM 进程进行底层系统调用抓包跟踪,真相大白:

openat(AT_FDCWD, "/.../wp-content/wpopt/cache/cache-17fd6d20e9efe99ecb7578a6754fc422.cache", O_RDONLY) = 7
read(7, "a:2:{s:5:"value";a:512:{s:7:"sit"..., 378629) = 370437
...(成千上万次文件读取)

原来 WordPress 内部遗留的 wp-opt 插件开启了基于文件的对象缓存,在 /wp-content/wpopt/cache/ 目录下无节制地积累了整整 10,919 个小碎片文件!在甲骨文云存在 IOPS 限制的磁盘上,每次页面渲染都要循环读取数千个碎片文件,直接导致磁盘 I/O 假死、PHP 进程池瞬间瘫痪!

3. 果断修复与效果

  • 彻底移除该低效的磁盘缓存插件,将缓存完全交由 PHP 8.3 OPcache 256MB 物理内存引擎 全权接管;
  • 重启 PHP 8.3-FPM 释放全部进程;
  • 惊人成果
    • 修复前:单个请求本地渲染耗时高达 4.91 秒
    • 修复后:单个请求本地渲染仅需 0.34 秒性能整整狂飙 14 倍!
    • ITDOG 全网测速成功恢复秒开,全链路返回标准 200 OK

四、总结与心得

通过今天的全链路调优:

  1. 网络层:借力 Cloudflare for SaaS 与腾讯云 DNSPod,彻底解决了海外服务器在大陆访问延迟高、节点差的痛点,国内访客直连 30ms 级优选 CDN;
  2. 服务层:保留了完好的 Cloudflare Workers 邮箱(mail.876855.xyz)与 Cloudflare 邮件路由收发;
  3. 系统层:清理了潜伏已久的磁盘文件缓存陷阱,开启 PHP 8.3 OPcache 256M 内存级缓存 + Nginx Gzip 压缩,首屏加载直接迈入毫秒级时代
  4. 运维层:看门狗监控脚本 24 小时保驾护航,真正实现无人值守、自动容灾自愈。

折腾虽然耗费精力,但抽丝剥茧定位到底层瓶颈并最终跑出毫秒级秒开的那一刻,成就感拉满!

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容