我的 monit 存在问题,Varnish 有时会崩溃并拒绝启动。因此,Varnish 已死,我的网络服务器无法访问。以下是来自 monit 日志的消息:
info : 'varnish' stop: /etc/init.d/varnish
info : 'varnish' start: /etc/init.d/varnish
error : monit: Error reading pid from file '/var/run/varnish.pid'
在 Varnish 监视器中,我想到设置一个选项来重新启动 nginx,以便当发生以下情况时它可以再次在端口 80 上监听外部请求:
if 3 restarts within 3 cycles
then exec "/etc/init.d/nginx restart"
and timeout
除了我调用它之外,有时 nginx 会成功停止......但永远不会再次启动。
我想到解决方案有点像黑客技术(kill -9 nginx && /etc/init.d/nginx start)和(killall -9 varnishd && rm -f /var/run/varnish.pid)。
我希望有人能针对上述两个问题提出建议。谢谢!
答案1
你将永远与 monit 作斗争;我不建议任何人使用它。更强大的架构是这样的守护进程工具。
答案2
永远不要使用 -9,但是如果您已经尝试过 -3 和 -15,它会使套接字保持打开状态,并且应用程序基本上没有机会自行清理。
答案3
重新启动 nginx 时我遇到了类似的问题。我使用类似这样的方法:
/etc/init.d/nginx stop
sleep 2
/etc/init.d/nginx start
而且它有效