Perché le mie istanze dell'applicazione non stanno diminuendo come previsto?
Quando il traffico verso la tua applicazione rallenta in modo che la tua applicazione inizi a diminuire, osservi che le istanze non vanno via.
Quando il carico di lavoro in entrata viene rallentato per la tua applicazione, Code Engine inizia a ridurre automaticamente un'applicazione in base ai suoi valori di scalabilità configurati. Code Engine invia un messaggio SIGTERM alla tua applicazione. Il
codice deve reagire a questo segnale e arrestarsi. Se il codice non gestisce il messaggio SIGTERM, le istanze dell'applicazione rimangono nello stato Terminating durante il valore di timeout della richiesta configurata (valore predefinito:
300 secondi).
Prova una di queste soluzioni.
-
Esamina la documentazione su come funziona il ridimensionamento. Vedi Configurazione della scalabilità dell'applicazione.
-
Esamina i valori configurati per il ridimensionamento automatico per la tua applicazione.
- Dalla console, vai alla pagina per la tua applicazione. Le impostazioni di scala automatica si trovano nella scheda Configurazione> Runtime.
- Con la CLI, esegui il comando
ibmcloud ce app getper visualizzare i dettagli della tua applicazione.
-
Assicurarsi che il codice gestisca i messaggi SIGTERM. Affinché le applicazioni si riducano in modo pulito, il codice dell'applicazione deve gestire un segnale SIGTERM. Quando Code Engine si riduce automaticamente, viene inviato un segnale SIGTERM alla tua applicazione.
Il seguente esempio di codice gestisce un messaggio SIGTERM perché chiude la connessione al server HTTP che è stata avviata dall'applicazione dopo che l'applicazione riceve un segnale che l'istanza termina.
const server = // start the HTTP server process.on('SIGTERM', () => { console.info('SIGTERM signal received.'); server.close(() => { console.log('Http server closed.'); }); }); -
Esamina i dettagli delle tue istanze dell'applicazione per aiutarti a risolvere i tuoi problemi. Vedi Ottenimento dei dettagli sulle istanze dell'app.