如何避免系统崩溃后PID冲突?

如何避免系统崩溃后PID冲突?

httpd24-httpd-2.4.34-7我正在RHEL 7.7 上运行配置为在启动时启动(通过 systemd)。最近我遇到了这个问题:

  1. 系统崩溃,httpd.pid文件完好无损
  2. 系统开始备份
  3. httpd启动失败,并显示如下消息:

    httpd-scl-wrapper[119625]:httpd(pid 1440)已经在运行

  4. 查找PID 1440,我发现它已被分配给不同的进程
  5. 所以,我需要在开始httpd.pid之前删除httpd

理想情况下,我们所有的服务都将在崩溃后重新启动,无需人工干预。有没有好的方法来避免/减轻这种情况?

答案1

(应奖励互联网积分对于评论中的这个答案.)

我们案例中的问题是我们PidFile在外部设置了自定义位置/var/run。我们的自定义位置不在tmpfs文件系统上,这意味着我们的httpd.pid自定义位置在崩溃并重新启动后将保持在原位。因此,解决方案是将 PID 文件存储/var/run在系统启动时重建的位置。

笔记:我们http24-httpd来自 RHSCL。默认情况下,进程似乎想要将其 PID 文件存储在/opt/rh/httpd24/root/var/run其中不是看起来是tmpfs

相关内容