Apache IoTDB 1.0.1版本Supervisor日志重复报启动异常原因咨询
进程启动模式变更
IoTDB 1.0.1可能调整了启动逻辑,采用了父进程fork子进程后立即退出的守护进程化实现。而Supervisor默认通过监控启动命令对应的PID来判断进程存活,当父进程退出后,Supervisor会误判进程已终止,触发自动重启,但实际子进程仍在正常运行。0.13.4版本则保持了单进程前台运行或父进程持续存活的启动模式,匹配Supervisor的检测逻辑。启动脚本行为差异
1.0.1的启动脚本可能默认启用了后台运行参数(比如隐含--daemon或类似参数),如果Supervisor配置中仍使用原启动命令,Supervisor会认为进程启动后立即退出,进而重复执行启动操作。而0.13.4的启动脚本默认以前台方式运行,符合Supervisor对受控进程的运行状态要求。进程信号处理不兼容
IoTDB 1.0.1可能修改了信号处理机制,当Supervisor发送监控相关信号(如SIGCHLD)时,进程返回的状态不符合Supervisor的预期判断标准,导致Supervisor误判进程未正常运行,从而发起重启操作。0.13.4的信号处理逻辑与Supervisor的监控机制兼容度更高,不会触发误判。进程标识或日志输出变化
若Supervisor配置了通过进程名称、日志输出内容来识别进程是否正常启动,1.0.1版本可能改变了进程名称格式或启动阶段的日志输出内容,导致Supervisor无法正确识别进程已处于运行状态,进而重复执行启动命令。但此时实际进程已占用端口等资源,重复的启动命令会直接退出,仅在Supervisor日志中留下重启记录,不影响正在运行的IoTDB服务。
内容的提问来源于stack exchange,提问作者Hester Tso

