Warum werden meine App-Instanzen nicht wie erwartet skaliert?
Wenn der Datenverkehr zu Ihrer Anwendung so verlangsamt wird, dass Ihre App mit einem Scale-down beginnt, stellen Sie fest, dass Instanzen nicht abgehen.
Wenn die eingehende Workload für Ihre Anwendung verlangsamt wird, beginnt Code Engine mit dem automatischen Scale-down einer Anwendung auf der Basis der konfigurierten Skalierungswerte. Code Engine sendet eine SIGTERM-Nachricht an Ihre Anwendung. Ihr
Code muss auf dieses Signal reagieren und herunterfahren. Wenn Ihr Code die SIGTERM-Nachricht nicht verarbeitet, verbleiben Ihre Anwendungsinstanzen während des konfigurierten Anforderungszeitpunkts im Status Terminating (Standardwert:
300 Sekunden).
Versuchen Sie eine der folgenden Lösungen.
-
Informationen zur Funktionsweise der Skalierung finden Sie in der Dokumentation. Informationen hierzu finden Sie im Thema Anwendungsskalierung konfigurieren.
-
Überprüfen Sie die Werte, die für die automatische Skalierung für Ihre Anwendung konfiguriert sind.
- Rufen Sie in der Konsole die Seite für Ihre Anwendung auf. Die Einstellungen für automatische Skalierung befinden sich auf der Registerkarte Konfiguration > Laufzeit.
- Führen Sie über die Befehlszeilenschnittstelle den Befehl
ibmcloud ce app getaus, um Details zu Ihrer App anzuzeigen.
-
Stellen Sie sicher, dass Ihr Code SIGTERM-Nachrichten verarbeitet. Damit Anwendungen ein Scale-down durchführen können, muss Ihr Anwendungscode ein SIGTERM-Signal verarbeiten. Wenn Code Engine automatisch skaliert wird, wird ein SIGTERM-Signal an Ihre Anwendung gesendet.
Das folgende Codebeispiel verarbeitet eine SIGTERM-Nachricht, weil es die Verbindung zum HTTP-Server schließt, der von der App gestartet wurde, nachdem die App ein Signal empfangen hat, dass die Instanz beendet wird.
const server = // start the HTTP server process.on('SIGTERM', () => { console.info('SIGTERM signal received.'); server.close(() => { console.log('Http server closed.'); }); }); -
Überprüfen Sie die Details Ihrer App-Instanzen, um die Fehlerbehebung für Ihre App zu erleichtern. Siehe Details zu App-Instanzen abrufen.