当前位置: 首页 > 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.平滑升级风险:在升级过程中,确保新旧版本的配置文件兼容,避免服务中断。
http://www.xdnf.cn/news/49231.html

相关文章:

  • Java(自用查看版)
  • C++项目 —— 基于多设计模式下的同步异步日志系统(5)(单例模式)
  • css3新特性第四章(渐变)
  • 集合框架(重点)
  • Jsp技术入门指南【八】利用EL表达式开发无脚本的JSP页面
  • HttpClient
  • 网络基础与 HTTP 协议
  • JavaScript forEach介绍(JS forEach、JS for循环)
  • 精益数据分析(7/126):打破创业幻想,拥抱数据驱动
  • 在 Node.js 中设置响应的 MIME 类型
  • Tailwindcss 入门 v4.1
  • rag搭建,是如何进行向量匹配检索的?
  • jsch(shell终端Java版)
  • LeRobot 项目部署运行逻辑(二)—— Mobile Aloha 真机部署
  • Vue3 打印网页内容
  • 通过Dify快速搭建本地AI智能体开发平台
  • 高边开关和低边开关的区别
  • 前端工程化之自动化部署
  • MVCC介绍
  • 《AI大模型应知应会100篇》第28篇:大模型在文本创作中的应用技巧
  • Matlab FCM模糊聚类
  • AI 编程工具——使用cursor创建一个mcp服务,并在cursor中调用
  • 使用LSTM动态调整SIMPLE算法松弛因子的CFD仿真训练程序
  • 使用tshark命令解析tcpdump抓取的数据包
  • 2025年4月19日
  • 【第四十一周】文献阅读:HippoRAG:受神经生物学启发的大型语言模型长期记忆机制
  • STM32 CubeMx下载及安装(一)
  • 【leetcode100】一和零
  • HarmonyOS-ArkUI-动画分类简介
  • javaSE.链表