Tous les produits
Search
Centre de documentation

Function Compute:Configurer les contrôles de santé des instances

Dernière mise à jour :Aug 12, 2026

Cette rubrique présente le contexte, les limites et le fonctionnement des contrôles de santé des instances de fonction. Elle explique également comment les configurer dans la console Function Compute.

Contexte

Les fonctions qui utilisent un runtime personnalisé ou une image de conteneur personnalisée peuvent parfois devenir instables, ce qui entraîne un comportement anormal de l'instance. Pour y remédier, configurez des contrôles de santé périodiques dans Function Compute. Cette configuration empêche le routage des requêtes vers des instances défaillantes et évite ainsi les échecs de requête.

Limites

Les contrôles de santé sont pris en charge uniquement pour les Web Function et les fonctions GPU.

Fonctionnement des contrôles de santé

Comportement au démarrage de l'instance

Si vous configurez un contrôle de santé pour une fonction, l'instance démarre selon le processus suivant.

  1. Si la fonction possède un hook d'initialisation, celui-ci s'exécute en premier. Sinon, la plateforme effectue immédiatement le contrôle de santé initial.

  2. Si ce contrôle initial réussit, l'instance est marquée comme saine et entame son cycle de contrôles périodiques. En cas d'échec, le démarrage de l'instance échoue, le processus de contrôle s'arrête et une erreur est renvoyée.

    • Lorsque le nombre d'échecs consécutifs atteint la valeur définie dans Maximum Failures, l'instance est marquée comme non saine. Function Compute tente alors de router les requêtes vers d'autres instances saines.

    • Si une instance non saine obtient un nombre de succès consécutifs égal au Threshold for Successful Detections configuré, elle redevient saine.

Pour savoir comment définir le Threshold for Successful Detections et le Maximum Failures, consultez la section Configurer les contrôles de santé dans la console.

Déroulement d'un contrôle de santé unique

Function Compute exécute un contrôle de santé individuel de la manière suivante :

  1. Envoie une requête GET sur le chemin HTTP spécifié dans la configuration de la fonction.

  2. Le contrôle réussit si la requête GET renvoie un code de statut HTTP compris entre 200 et 399 avant l'expiration du délai. Sinon, il échoue.

Planification après un échec de contrôle de santé

Lorsqu'une instance de fonction devient non saine, Function Compute tente de router les requêtes vers d'autres instances.

  • Si Function Compute route la requête avec succès, une nouvelle instance saine l'exécute.

  • Si Function Compute ne parvient pas à router la requête vers une autre instance dans les temps, une erreur d'échec de contrôle de santé est renvoyée. Lors de l'invocation suivante, le système tente de planifier la requête directement sur une nouvelle instance.

Configurer les contrôles de santé dans la console

Cette section détaille la configuration des contrôles de santé pour une fonction. L'exemple utilise une Web Function avec le Runtime Node.js 18.

Étape 1 : Créer une fonction

  1. Connectez-vous à la console Function Compute, puis dans le volet de navigation de gauche, sélectionnez Function Management > Functions.

  2. Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Functions, cliquez sur Create Function.

  3. Sur la page Create Function, sélectionnez Web Function. Pour le Custom Runtime, choisissez Custom Runtime. Cliquez ensuite sur Create.

  4. Sur la page de détails de la fonction, sélectionnez l'onglet Code. Modifiez le code de la fonction dans l'éditeur, puis cliquez sur Deploy.

    Voici le code d'exemple pour index.js.

    'use strict';
    
    // Constants
    const PORT = 9000;
    const HOST = '0.0.0.0';
    const REQUEST_ID_HEADER = 'x-fc-request-id'
    
    const express = require('express');
    const bodyParser = require('body-parser');
    const app = express();
    
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(bodyParser.json());
    app.use(bodyParser.raw());
    
    app.get('/readyz', (req, res) => {
      console.log(`receive health check`);
      res.status(200);
      console.log(`i am ready`);
      res.send('i am ready\n');
    });
    
    // invocation
    app.post('/invoke', (req, res) => {
      var rid = req.headers[REQUEST_ID_HEADER]
      console.log(`FC Invoke Start RequestId: ${rid}`)
      res.send('OK');
      console.log(`FC Invoke End RequestId: ${rid}`)
    });
    
    var server = app.listen(PORT, HOST);
    console.log(`Running on http://${HOST}:${PORT}`);
    
    server.timeout = 0; // never timeout
    server.keepAliveTimeout = 0; // keepalive, never timeout

    Dans le code ci-dessus, readyz correspond au gestionnaire de contrôle de santé. Il traite les requêtes HTTP GET envoyées au chemin /readyz. Une fois l'Étape 2 : Configurer les contrôles de santé pour l'instance de fonction terminée, vous pouvez configurer Function Compute pour qu'il exécute périodiquement ce gestionnaire afin de vérifier l'état de l'instance.

    Si Function Compute détecte que votre instance est non saine, il tente de router les requêtes vers d'autres instances saines. Si Function Compute n'y parvient pas, une erreur liée à l'échec du contrôle de santé est renvoyée.

Étape 2 : Configurer les contrôles de santé

  1. Connectez-vous à la console Function Compute, puis dans le volet de navigation de gauche, sélectionnez Function Management > Functions.

  2. Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Functions, cliquez sur la fonction créée à l'étape précédente.

  3. Sur la page de détails de la fonction, sélectionnez l'onglet Configuration. À droite de Advanced Settings, cliquez sur Modify. Dans le panneau Advanced Settings, activez le commutateur Health Check, configurez les paramètres décrits dans le tableau suivant, puis cliquez sur Deploy.

    Paramètre

    Description

    Request Path

    Chemin auquel Function Compute envoie une requête HTTP GET pour effectuer le contrôle. La valeur doit commencer par /.

    Delay for First Detection

    Délai en secondes après le démarrage de l'instance avant l'exécution du premier contrôle.

    Detection Interval

    Intervalle en secondes entre deux contrôles de santé.

    Timeout Period

    Durée maximale en secondes pour recevoir une réponse. Le contrôle échoue si aucune réponse n'est reçue dans ce délai.

    Maximum Failures

    Nombre d'échecs consécutifs requis pour marquer une instance comme non saine.

    Threshold for Successful Detections

    Nombre de succès consécutifs nécessaires pour qu'une instance non saine redevienne saine.

Étape 3 : Vérifier le contrôle de santé

  1. Sur la page de configuration de la fonction, sélectionnez l'onglet Code et cliquez sur Test Function pour consulter le résultat.

    Avec le code d'exemple de l'étape 1, l'instance passe le contrôle de santé et renvoie OK.

  2. Remplacez le gestionnaire de contrôle de santé dans le code par l'extrait suivant. Cliquez sur Deploy. Une fois le déploiement terminé, cliquez à nouveau sur Test Function pour observer le résultat.

    Le code modifié est le suivant :

    app.get('/readyz', (req, res) => {
      console.log(`receive health check`);
      res.status(500);
      console.log(`i am not ready`);
      res.send('i am not ready\n');
    });

    Le contrôle de santé échouera désormais systématiquement avec un code de statut 500. Lors de la prochaine invocation de la fonction, vous recevrez la réponse suivante :

    {
        "RequestId": "1-65081d42-e4895cbc7d6252bda643****",
        "Code": "FunctionNotStarted",
        "Message": "The function http server cannot be started. check function health failed with status code: 500 "
    }

Informations complémentaires

Outre la console, Function Compute permet également de configurer les contrôles de santé des instances via une API. Pour plus d'informations, consultez Mettre à jour les configurations de contrôle de santé.