Graceful Shutdown in Node.js-Produktionsdiensten

Jedes Mal, wenn du einen Node.js-Dienst ohne ordentlichen Shutdown-Handler deployst, spielst du mit laufenden Requests. Der Prozess erhält SIGTERM, Node.js ignoriert ihn standardmäßig, Kubernetes sendet irgendwann SIGKILL, und jeder Request, der gerade unterwegs ist, bekommt einen Verbindungs-Reset. Das passiert bei jedem Rolling Deployment, bei jeder Pod-Eviction und bei jedem Scale-Down-Event.

Die meisten Teams entdecken das Problem erst durch User-Reports — intermittierende 503er während Deployments in der Hochphase, die sich lokal schwer reproduzieren lassen. Der Fix ist nicht kompliziert, aber er erfordert, dass du genau verstehst, was während der Kubernetes-Terminierungssequenz passiert, und ein paar bewegliche Teile in der richtigen Reihenfolge zusammenführst.