2024年的时候发过一个求助帖子:因为nginx经常莫名自停,发现了软件商城里有个进程守护工具,就想是不是可以通过设置实现nginx监控,停止后自动重启?管理员给出的方法是linux版本的,windows版本的如何处理一直是个悬而未决的问题,看后面的回复也有其他站长遇到相同问题。(原贴地址:https://www.bt.cn/bbs/thread-138519-1-1.html)
因为这个问题是阶段性的,后面没再频繁遇到也就没在意,结果上周也就是9月5日左右这一问题频繁出现,一度无法打开网站,后来发现是海量蜘蛛访问造成的(以前的nginx经常莫名自停可能也是这个原因),即使经过防御设置还是会遇到nginx自停,于是再次研究进程守护工具,把nginx设置成守护进程。设置如下:
任务名称:nginx
运行目录:C:\BtSoft\nginx
启动命令:C:\BtSoft\nginx\nginx.exe
进程数量:1
备注:nginx被关闭后自动重启
重启规则:全部重启
重启次数:10
分钟内重启超过:3
测试手动停掉 Nginx,可以看到任务管理器内Nginx和php-cgi进程全部消失,这时插件自动把 Nginx拉起来了,证明堡塔的 Nginx监控插件是生效的,但是php-cgi进程没有同步拉起,网站502错误。同时,堡塔面板首页的 Nginx 状态还是红色的暂停键,不过如果此时再面板重启php,网站可以打开, 说明Nginx监控插件启动的进程是成功的,只是它没有激活面板的按键为绿色。
这时想到,如果Nginx监控插件有效,再让php-cgi 启动起来不就可以了,于是又新增一条php-cgi 进程守护,启动命令:C:\BtSoft\php\52\php-cgi.exe,测试发现这个守护在检测不到php-cgi.进程时立刻执行启动命令,成功拉起了 php-cgi。这时,nginx、php-cgi 都存在了,但是网站依然打不开。于是猜测通过监控插件启动的Nginx和php-cgi进程是互不关联的,可能是被面板写死在一起的,于是测试把面板重启,堡塔面板首页的 Nginx 状态键变为绿色,网站打开正常,似乎验证了面板把两者绑定在了一起,两个通过插件单独启动没用。想反馈的是:
1.如果Nginx和php-cgi这些进程是被面板封装,需要面板支持才能正常启动的进程,这个进程守护的意义在哪里?
2.如果Nginx等进程暂停故障可以通过面板重启来解决,那有没有面板自动重启的设置呢?
经过与豆包的不懈交流(豆包也是东一榔头西一棒槌的给答案,得不停的各个角度询问和相互验证),终于摸索到一个nginx停止后的自动重启方案,目前测试可行,记录一下,如果不对的欢迎指正,大家有好方法也多分享。
用 Windows 系统自带【服务】监控
宝塔在 Windows 里,Nginx已注册成 Windows 系统服务!
操作步骤
1. `Win+R`,输入 `services.msc` 回车,打开系统服务
2. 在列表找到宝塔注册的 `Nginx` 服务
3. 双击打开属性,切换到【恢复】选项卡
4. 设置:
第一次失败:重新启动服务
第二次失败:重新启动服务
后续失败:重新启动服务
重置失败计数:1 天
重启延迟:1分钟
5. 【常规】选项卡,启动类型设为自动,点确定保存
如果 Nginx 服务意外停止,Windows 会自动重启宝塔注册的 Nginx 服务,不是裸启动 nginx.exe。感觉调用的是宝塔完整服务,和在面板点重启 Nginx一样,会自动连带拉起 php-cgi!
|
|