当前位置: 首页 > news >正文

【nginx】服务的信号控制

目录

          • 1. 说明
          • 2. 常用信号及作用
          • 3. 信号控制的具体操作
            • 3.1 获取 Nginx 主进程 PID
            • 3.2 发送信号
          • 4. 应用场景
            • 4.1 重新加载配置文件
            • 4.2 日志切割
          • 5. 平滑升级 Nginx
          • 6. 注意事项

1. 说明
  • 1.Nginx 的信号控制是其管理服务的重要机制,通过向主进程发送特定信号,可以实现对 Nginx 的平滑重启、重新加载配置、关闭服务等操作,而无需停止服务或中断用户请求。
2. 常用信号及作用
信号发送方式作用
TERMINTkill -TERM <PID>kill -INT <PID>立即关闭 Nginx 服务,所有工作进程和主进程将直接退出,未完成的请求会被中断。
QUITkill -QUIT <PID>优雅关闭 Nginx 服务,主进程会等待所有工作进程完成当前请求后再退出。
HUPkill -HUP <PID>重新加载配置文件,主进程会启动新的工作进程,并平滑关闭旧的工作进程。
USR1kill -USR1 <PID>重新打开日志文件,用于日志切割,不会中断服务。
USR2kill -USR2 <PID>平滑升级 Nginx,启动新的主进程和新的工作进程,旧进程继续处理剩余请求。
WINCHkill -WINCH <PID>优雅关闭工作进程,通常与 USR2 配合使用,用于平滑升级时关闭旧工作进程。
3. 信号控制的具体操作
3.1 获取 Nginx 主进程 PID
  • 1.Nginx 主进程的 PID 通常存储在配置文件中指定的 PID 文件中,默认路径为 /usr/local/nginx/logs/nginx.pid 或 /var/run/nginx.pid。
  • 2.可以通过以下命令获取:cat /usr/local/nginx/logs/nginx.pid
3.2 发送信号
  • 1.使用 kill 命令向主进程发送信号。
  • 2.重新加载配置文件:kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)
  • 3.优雅关闭服务:kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid)
  • 4.重新打开日志文件(用于日志切割):kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
4. 应用场景
4.1 重新加载配置文件
  • 1.当修改了 Nginx 配置文件(如 nginx.conf)后,无需停止服务即可使新配置生效
  • 2.kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)
  • 3.nginx -s reload
4.2 日志切割
  • 1.为了防止日志文件过大,可以定期切割日志。
  • 2.重命名当前日志文件:mv /usr/local/nginx/logs/access.log /usr/local/nginx/logs/access.log.old
  • 3.向 Nginx 主进程发送 USR1 信号,重新打开日志文件:kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
  • 4.压缩或归档旧日志文件:gzip /usr/local/nginx/logs/access.log.old
5. 平滑升级 Nginx
  • 1.当需要升级 Nginx 时,可以使用 USR2 和 WINCH 信号实现平滑升级:
  • 2.启动新的 Nginx 二进制文件:/path/to/new/nginx -c /path/to/nginx.conf
  • 3.新进程会作为主进程运行,旧主进程的 PID 会被重命名为 .oldbin。
  • 4.向旧主进程发送 USR2 信号,启动新的工作进程:kill -USR2 $(cat /var/run/nginx.pid)
  • 5.向旧主进程发送 WINCH 信号,优雅关闭旧工作进程:kill -WINCH $(cat /var/run/nginx.pid.oldbin)
  • 6.确认新进程正常运行后,关闭旧主进程:kill -QUIT $(cat /var/run/nginx.pid.oldbin)
6. 注意事项
  • 1.信号发送对象:始终向 Nginx 主进程发送信号,而不是工作进程。
  • 2.日志文件权限:确保 Nginx 有权限写入日志文件,否则 USR1 信号可能无效。
  • 3.配置文件语法检查:在重新加载配置文件前,建议先检查语法是否正确:nginx -t
  • 4.平滑升级风险:在升级过程中,确保新旧版本的配置文件兼容,避免服务中断。

相关文章:

  • 精益数据分析(9/126):如何筛选创业路上的关键数据指标
  • TensorFlow介绍
  • Oracle EBS COGS Recognition重复生成(一借一贷)
  • 字节头条golang二面
  • 数字化时代下的工业物联网智能体开发平台策略
  • Viper配置管理笔记
  • 网络原理 - 应用层, 传输层(UDP 和 TCP) 进阶, 网络层, 数据链路层 [Java EE]
  • Java EE(20)——线程安全——ThreadLocal
  • Python多进程同步全解析:从竞争条件到锁、信号量的实战应用
  • 第十六节:高频开放题-React与Vue设计哲学差异
  • 闭包函数的应用与理解
  • iOS 应用性能测试工具对比:Xcode Instruments、克魔助手与性能狗
  • FileZilla“服务器发回了不可路由的地址,使用服务器地址代替
  • 专题讨论:BST树上的添加与删除
  • Few-shot medical image segmentation with high-fidelity prototypes 论文总结
  • 使用tshark命令解析tcpdump抓取的数据包
  • 【计量地理学】实验六 地理属性空间插值
  • OpenCV 模板与多个对象匹配方法详解(继OpenCV 模板匹配方法详解)
  • 【PyTorch】训练时跟OOM相关的提示信息
  • 传导发射测试(CE)和传导骚扰抗扰度测试(CS)
  • 重大虚开发票偷税骗补案被查处:价税2.26亿,涉700余名主播
  • 又有多地推进产科整合
  • 人民日报:各地扎实开展学习教育,一体推进学查改
  • “30小时不够”,泽连斯基建议延长停火至30天
  • 85岁眼科专家、武汉大学人民医院原眼科主任喻长泰逝世
  • 解除近70家煤电厂有毒物质排放限制,特朗普能重振煤炭吗?