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 get aus, 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.