es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , , ,

Answer

  1. Avatar for 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í:

    [Servicio]
    LimitNOFILE=65535
    LimitNPROC=65535
    TasksMax=infinity
    Type=simple
    PIDFile=/data/happybird/happybird.pid
    WorkingDirectory=/data/happybird
    ExecStart=/data/happybird/bin/happybird
    RestartSec=5
    Restart=on-failure
    

    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.

Comments are closed.