node-sonos-http-api icon indicating copy to clipboard operation
node-sonos-http-api copied to clipboard

Add stop command for reliable systemd shutdown

Open rtimmons opened this issue 7 years ago • 1 comments
trafficstars

Thanks for your work on this package!

I've found that running node-sonos-http-api through a systemd service occasionally results in the process "running away" such that systemd can no longer stop or restart it for config-changes or deployments. I doubt this is a bug in node-sonos-http-api (but fwiw this doesn't happen with simple express.js apps running with the same systemd configs).

I am not an expert in systemd or node, but I've found out that adding a npm run stop command solves the issue very reliably and without any real downside that I can see. The stop command just does a pkill of the server using its symbolic process name which is now set at the top of the server.js file.

I've been running with this change for several days and have not had any more "zombie" processes. Contributing this back in case it helps others in the future.

rtimmons avatar Jun 27 '18 17:06 rtimmons

I think this must depend on how you setup your systemd daemon for this process? It would be better to now rely on external tools, and maybe act properly on a SIGINT signal inside the app that would shut down gracefully. Could you please explain how you set this up as a systemd service? Or if you followed a guide, which guide?

My advice is usually to use pm2 to host all your node processes (this also has an installable systemd setup) which just handles this nicely as far as I can tell, but of course if there is some improvements to be done to make it easier to set it up with systemd directly, I should look into that.

jishi avatar Jul 04 '18 11:07 jishi