版本: 1.9.7.2
场景: nginx 启动时, 启动 n 个worker, 通过 init_worker_by_lua脚本共同争用一把全局锁, 拿不到锁的, 结束init_worker_by_lua阶段, 开始正常处理请求, 拿到锁的, 进入 repeat ... until false, 同步一些请求处理需要的配置
期望: 拿到锁的 worker 永远在 init_worker_by_lua阶段, 通过死循环同步配置永不退出
问题: 线上2000台机器, 经过一晚上运行, 有2台机器出现死循环退出的情况
试图解决: repeat 已经做了如下处理:
repeat
pcall(cron.try_load)
until false
通过 pcall 捕获可能出现的任何异常
然而, 还是存在 worker 从循环退出的情况
从 error.log 中, 看不到 stack 信息
有每小时切分日志的信号发送, 可以看到, 在 worker 退出的时间点, 也处理了切分日志信号
可以判断, nginx worker 在死循环+pcall 的情况下, 异常退出
麻烦问一下, 问题可能出在哪
或者, 有没有其他解决方法
thanks