我想用monit重新加载,而不是重启,nginx。文档说有效的服务方法是启动,停止和重启,但不重新加载。
有没有人有解决方法如何重新加载nginx而不是重新启动它?
编辑 - 我应该指出我仍然需要能够重启nginx但在某些情况下我还需要重新加载nginx。
一个例子可能是,如果nginx出现故障,则需要重新启动,但如果它有正常运行时间> 3天(例如)它应该重新加载。
我试图实现这一目标:https://mmonit.com/monit/documentation/monit.html#UPTIME-TESTING
...但是使用nginx重新加载,而不是重新启动。
感谢。
答案 0 :(得分:1)
当满足条件时,我使用exec
命令解决了这个问题。例如:
check system localhost
if memory > 95%
for 4 cycles
then exec "/etc/init.d/nginx reload"
我发现nginx内存问题可以在短期内通过重新加载而不是重新启动来解决。
答案 1 :(得分:0)
你可以传递应该完成工作的重载信号:
nginx -s reload
答案 2 :(得分:0)
“使用文档。卢克!”
根据文档,发送HUP
信号将导致nginx重新读取其配置文件,进行检查并应用新配置。
答案 3 :(得分:0)
这是一个可以实现您想要的配置:
check process nginx with pidfile /usr/local/var/run/nginx.pid
start program = "/usr/local/bin/nginx -s start"
stop program = "/usr/local/bin/nginx -s stop"
if uptime > 3 days then exec "/usr/local/bin/nginx -s reload"
我在配置上尝试了这个。我看到的唯一问题是Monit假定你在检查这样的正常运行时间时定义了一个错误条件。我在我的机器上看到的nginx -s reload
命令并没有将进程的正常运行时间重置为0.因为Monit认为正常运行时间为> 3天是由您在配置中提供的命令补救的错误条件,但该命令不会将正常运行时间重置为少于3天,Monit将报告Uptime failed
作为进程的状态,并且你会在日志中看到这个:
error : 'nginx' uptime test failed for /usr/local/var/run/nginx.pid -- current uptime is 792808 seconds
实际上你会看到数百个(我的配置Monit每30秒运行一次,所以我每隔30秒就会得到一个)。
一个问题:我不确定经过很长一段时间后的reload
nginx,比如3天,会为它做些什么 - 为nginx这样做是否有帮助?如果您有关于为什么这对nginx有益的信息的链接,这可能有助于其他读者通过搜索到达此页面。也许你接受了你所做的答案,因为你发现只有在出现问题时才会这样做,比如内存使用量很高?
(老帖子,我知道,但是我通过Google来到这里,看到接受的答案是不完整的,也不完全理解OP的意图。)
编辑:啊,我看到你接受了自己的答案。我的错。所以看来你确实看到做你最初提出的问题毫无意义,而是选择了内存检查!我会留下我的帖子,让其他任何读者都清楚地知道这个问题