插件窝 干货文章 nginx平滑重启和FPM平滑重启是什么

nginx平滑重启和FPM平滑重启是什么

重启 平滑 进程 配置 891    来源:    2025-04-22

Nginx 和 PHP-FPM 平滑重启详解

Nginx 平滑重启

Nginx 平滑重启是指在不停机的情况下重新加载配置或升级 Nginx 服务。

实现方式

  1. 重新加载配置

    nginx -s reload
    

    kill -HUP `cat /var/run/nginx.pid`
    
  2. 平滑升级二进制文件

    • 备份旧二进制文件
    • 替换为新版本二进制文件
    • 执行 kill -USR2cat /var/run/nginx.pid``
    • 优雅关闭旧进程 kill -QUITcat /var/run/nginx.pid.oldbin``

工作原理

  • 主进程接收到信号后,会检查配置语法
  • 如果配置正确,会启动新的工作进程
  • 旧的工作进程会继续处理已建立的连接,直到完成
  • 新连接将由新工作进程处理

PHP-FPM 平滑重启

PHP-FPM (FastCGI Process Manager) 的平滑重启是指在不中断服务的情况下重新加载 PHP 配置或代码。

实现方式

  1. 重新加载配置

    kill -USR2 `cat /var/run/php-fpm.pid`
    

    service php-fpm reload
    
  2. 优雅重启所有工作进程

    kill -USR1 `cat /var/run/php-fpm.pid`
    

工作原理

  • 主进程接收到 USR2 信号后会重新加载 php.ini 和 pool 配置
  • 主进程接收到 USR1 信号后会优雅重启所有工作进程
  • 旧的工作进程会继续处理当前请求直到完成
  • 新的请求将由新的工作进程处理

主要区别

特性 Nginx 平滑重启 PHP-FPM 平滑重启
主要命令 nginx -s reload kill -USR2
配置文件重载 支持 支持
二进制升级 支持 不支持
影响范围 连接级别 请求级别
典型用途 修改Nginx配置 修改PHP配置或部署新代码

最佳实践

  1. 在修改配置后总是先测试语法:

    • Nginx: nginx -t
    • PHP-FPM: php-fpm -t
  2. 平滑重启前确保有足够的系统资源

  3. 对于关键业务,考虑在低峰期执行

  4. 监控服务状态确保重启成功

  5. 对于PHP应用,如果使用OPcache,可能需要额外清除缓存