You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Digital Ocean上PHP-FPM容器与Caddy搭配后间歇性无响应求助

问题总结

三台搭载Docker的DigitalOcean Ubuntu云服务器实例,以Caddy作为反向代理,其中2台使用PHP-FPM、1台使用PHP-FPM Alpine版本。运行一段时间后(几天到3-4周不等,近期部分实例每日故障),所有请求停止响应,Caddy/Nginx均返回502 Bad Gateway,日志显示连接PHP-FPM端口超时,但PHP容器仍处于运行状态,重启Caddy或PHP容器即可恢复服务。

排查与修复建议

1. 检查PHP-FPM连接池配置

PHP-FPM连接池耗尽会导致无法接受新连接,即便容器仍运行。

  • 进入PHP容器查看池配置:
    docker exec -it PHP_CONTAINER cat /usr/local/etc/php-fpm.d/www.conf
    
  • 重点关注以下参数:
    • pm.max_children:最大子进程数,需根据服务器内存调整(建议每进程占用内存×数量 ≤ 容器可用内存)
    • request_terminate_timeout:脚本最大执行时间,避免长时间运行的脚本挂死进程
    • pm.max_spare_servers:最大空闲进程数,防止进程过度堆积
  • 启用慢请求日志追踪异常脚本:
    在www.conf中添加:
    slowlog = /var/log/php-fpm/slow.log
    request_slowlog_timeout = 10s
    
    挂载日志目录到宿主机,便于排查超时脚本。

2. 优化Caddy FastCGI连接配置

默认的php_fastcgi配置可能存在连接泄漏或超时设置不合理的问题,调整参数优化长连接管理:

mydomain.com {
    root * /var/www/public
    php_fastcgi /* php:9000 {
        keepalive 20          # 限制长连接数量,避免连接堆积
        dial_timeout 5s       # 缩短连接超时时间
        read_timeout 30s      # 调整请求读取超时
    }
    file_server
}

3. 排查Docker网络连接问题

故障发生时,先验证网络连通性:

  • 在Caddy容器内测试PHP-FPM端口:
    docker exec -it CADDY_CONTAINER nc -zv php 9000
    
  • 检查宿主机/容器内的TCP连接状态,查看是否有大量TIME_WAIT或ESTABLISHED连接堆积:
    netstat -anp | grep 9000
    
  • 调整宿主机内核参数优化TCP连接回收,在/etc/sysctl.conf添加:
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_fin_timeout = 30
    net.core.somaxconn = 1024
    
    执行sysctl -p使参数生效。

4. 添加容器健康检查实现自动恢复

通过Docker健康检查,自动重启故障服务:
Docker Compose示例:

services:
  php:
    build: ./php
    healthcheck:
      test: ["CMD-SHELL", "nc -zv 127.0.0.1 9000 || exit 1"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 60s
  caddy:
    image: caddy:latest
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost/health || exit 1"]
      interval: 30s
      timeout: 5s
      retries: 3

5. 排查应用代码与扩展问题

  • 检查PHP应用是否存在数据库连接泄漏、未关闭的资源句柄,导致进程挂死
  • 对于WordPress站点,禁用第三方插件逐一排查,确认是否存在插件导致的内存泄漏或长时间运行脚本

内容的提问来源于stack exchange,提问作者bonsay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:40:28