首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx -s退出在升级1.8之后什么也不做,我如何调试和/或发现问题?

问Nginx -s退出在升级1.8之后什么也不做,我如何调试和/或发现问题?
EN

Server Fault用户
提问于 2015-05-11 17:15:44
回答 1查看 318关注 0票数 2

不幸的是,这个问题的前提是模糊的,但我无法确定一个更具体的问题。我将一台机器从nginx1.6.3升级到1.8,现在发布一个nginx -s quit实际上什么也不做。该命令不提供任何输出,access_log和error_log文件显示没有异常,即使在所有vhost中启用了调试级。在/var/log/nginx/error.log中,除了“信号处理启动”通知之外,没有别的东西。pgrep nginx显示,流程停留在那里,好像什么都没发生一样。

我知道退出信号并不一定立即停止nginx,因为它应该优雅地退出,但是这里的问题是,即使机器是防火墙、隔离的,并且没有处理任何请求,nginx -s quit仍然什么也不做。在与1.6.3完全相同的条件下,过程立即停止。

我完全不知道如何调试这个问题,并找到根本原因,但显然有些地方不对劲。如果能帮助我找到正确的方向,我将不胜感激。

编辑:我们看到的行为如下,一步一步:

  1. apt-使用nginx 1.6.3到1.8更新/升级机器(当提示安装新的/etc/nginx/nginx.conf时)
  2. sudo nginx -s quit第一次按预期工作
  3. sudo service nginx start按预期将nginx带回来
  4. sudo nginx -s quit第二次不再做任何事情,即使在重新启动之后也将保持原样。

我们在VM中对此进行了多次测试,结果是一致的。也许是1.8里的窃听器?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2016-07-09 17:18:20

由于某些原因,我们还没有找到,因此nginx在我们的环境中创建了两个pid文件:/run/nginx.pid和/var/run/nginx.pid。不管nginx版本如何,这似乎都会发生,因此它本身似乎不是一个nginx错误。

运行nginx -s quit不会像它应该的那样杀死和删除pids,但是service nginx stop会这样做。因此,为了在最新的nginx版本中进行优雅的重新启动,我们必须同时运行这两个版本:

  1. sudo nginx -s quit
  2. sudo service nginx stop (花一分钟左右的时间为优雅的退出留出时间)
  3. sudo service nginx start

然后,只要通过服务命令停止nginx,确保quit不会滞后,后续的信号就会正常工作。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/691196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档