Pourquoi mes instances d'application ne sont-elles pas mises à l'échelle comme prévu?

Lorsque le trafic vers votre application ralentit de sorte que votre application commence à diminuer, vous constatez que les instances ne s'en vont pas.

Lorsque la charge de travail entrante ralentit pour votre application, Code Engine commence à réduire automatiquement une application en fonction de ses valeurs de mise à l'échelle configurées. Code Engine envoie un message SIGTERM à votre application. Votre code doit réagir à ce signal et s'arrêter. Si votre code ne gère pas le message SIGTERM, vos instances d'application restent à l'état Terminating pendant la valeur de délai d'attente de la demande configurée (valeur par défaut: 300 secondes).

Essayez l'une des solutions ci-après.

  • Consultez la documentation sur le fonctionnement de la mise à l'échelle. Voir Configuration de la mise à l'échelle d'application.

  • Passez en revue les valeurs configurées pour la mise à l'échelle automatique de votre application.

    • Dans la console, accédez à la page de votre application. Les paramètres de mise à l'échelle automatique se trouvent dans l'onglet Configuration > Exécution.
    • A l'aide de l'interface de ligne de commande, exécutez la commande ibmcloud ce app get pour afficher les détails de votre application.
  • Vérifiez que votre code gère les messages SIGTERM. Pour que les applications soient mises à l'échelle correctement, votre code d'application doit traiter un signal SIGTERM. Lorsque Code Engine est automatiquement réduit, un signal SIGTERM est envoyé à votre application.

    L'exemple de code suivant traite un message SIGTERM car il ferme la connexion au serveur HTTP qui a été démarré par l'application une fois que celle-ci a reçu un signal indiquant que l'instance s'est arrêtée.

    const server = // start the HTTP server
    
    process.on('SIGTERM', () => {
      console.info('SIGTERM signal received.');
      server.close(() => {
        console.log('Http server closed.');
      });
    });
    
  • Passez en revue les détails de vos instances d'application pour vous aider à identifier et résoudre les problèmes liés à votre application. Voir Obtention de détails sur les instances d'application.