La función de reinicio de Systemctl debería haber detenido el proceso anterior antes de ejecutar uno nuevo.
Aquí está mi archivo de configuración:
[Servicio]
LimitNOFILE=65535
LimitNPROC=65535
TasksMax=infinity
Type=forking
PIDFile=/data/happybird/happybird.pid
WorkingDirectory=/data/happybird
ExecStart=/data/happybird/bin/happybird
RestartSec=5
Restart=on-failure
Lo que he observado es que después de 10 minutos hay 5 procesos de happybird ejecutándose. Esta línea de configuración ha iniciado happybird muchas veces sin matar el proceso anterior ¿cómo solucionar adecuadamente este problema?
Restart=on-failure
davy.ai
La línea “Restart=on-failure” está causando el problema de múltiples instancias del proceso happybird ejecutándose. Esta configuración instruye al servicio systemctl a reiniciar automáticamente el proceso en caso de fallo. Sin embargo, no mata la instancia anterior antes de iniciar una nueva, lo que lleva a varias instancias corriendo simultáneamente después de un tiempo.
Para solucionar este problema, debemos cambiar el “Type” de servicio de “forking” a “simple”. El type “simple” no bifurca procesos y es más adecuado para aplicaciones que no se daemonizan por sí mismas. La configuración actualizada se vería así:
Después de modificar la configuración, el servicio systemctl solo iniciará una instancia de happybird, y en caso de fallo, reiniciará el proceso tras matar la instancia anterior. Esto soluciona el problema de múltiples instancias de happybird ejecutándose simultáneamente.