帮助文档 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
帮助文档 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 函数计算 FC 3.0
  4. 操作指南
  5. 配置函数
  6. 配置实例健康检查

配置实例健康检查

  • 配置函数
  • 发布于 2025-04-16
  • 0 次阅读
文档编辑
文档编辑

本文介绍函数实例健康检查的背景信息、使用限制和健康检查的行为,以及如何在函数计算控制台设置函数实例的健康检查策略。

背景信息

Web 函数的自定义运行时和自定义容器镜像可能出现不稳定的情况,导致函数实例工作异常。这种情况下,函数计算支持为函数实例设置周期性健康检查,避免请求消息被分配至异常实例而导致请求失败。

使用限制

仅Web 函数实例支持设置健康检查功能。

健康检查的行为

实例启动行为

如果您为函数配置了健康检查,实例启动的行为如下。

  1. 如果函数定义了初始化回调程序Initializer,则先执行Initializer。否则,直接进行首次健康检查。

  2. 如果首次健康检查成功,则认为实例健康,并进入健康检查循环,执行周期性健康检查,具体流程如下。否则,认为实例启动失败,健康检查流程终止,并返回相关错误信息。

    • 如果连续健康检查失败,次数达到您设置的最大失败次数,则认为该函数实例不健康。函数计算将尝试调度请求到其他实例。

    • 如果不健康的实例连续健康检查成功,次数达到您设置的探测成功阈值,则认为该实例已恢复健康。

关于探测成功阈值和最大失败次数的设置,请参见使用控制台为函数实例设置健康检查。

单次健康检查行为

函数计算执行一次健康检查的行为如下。

  1. 根据函数配置,向指定HTTP路径发送GET请求。

  2. 如果GET请求执行没有超时,HTTP返回状态码小于400且大于等于200,则认为本次检查成功。否则,认为本次检查失败。

健康检查失败后的调度行为

如果函数实例不健康,函数计算将尝试调度请求到其他实例。

  • 如果函数计算调度请求成功,请求将在新的函数实例上执行。

  • 如果函数计算未能及时调度请求到其他实例,将返回健康检查失败错误信息。下一次执行健康检查时,会直接调度到新的函数实例。

使用控制台为函数实例设置健康检查

本文以选择Web 函数方式创建一个运行环境为Node.js 18的函数为例,介绍如何为函数的实例配置健康检查功能。

步骤一:创建函数

  1. 登录函数计算控制台,在左侧导航栏,单击函数。

  2. 在顶部菜单栏,选择地域,然后在函数页面,单击创建函数。

  3. 在创建函数页面,按需选择创建函数的方式,配置以下配置项,然后单击创建。

    本文选择创建函数的方式为Web函数。配置项说明如下,其余配置项保持默认值。

    配置项

    说明

    函数名称

    自定义函数名称。

    运行环境

    选择Node.js 18。

  4. 在函数配置页面,选择代码页签,在代码编辑器内编辑函数代码,然后部署代码并执行函数。

    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

    上述代码中,readyz为定义的健康检查的Handler,用于处理/readyz路径下的HTTP GET请求。完成步骤二:为函数实例设置健康检查的操作后,您可以配置周期性执行此Handler,持续检查实例是否正常。

    当函数计算判定您的函数实例异常时,将尝试将请求调度到其他正常的实例。如果函数计算调度失败,会返回健康检查失败相关的报错信息。

步骤二:为函数实例设置健康检查

  1. 登录函数计算控制台,在左侧导航栏,单击函数。

  2. 在顶部菜单栏,选择地域,然后在函数页面,单击目标函数。

  3. 在函数配置页面,选择配置页签。

  4. 在左侧菜单栏,选择健康检查页签,单击编辑,在健康检查页面按需设置以下配置项,然后单击确定。

    配置项

    说明

    健康检查

    是否开启对实例进行健康检查的功能。如果选择启用,您需要设置下面的配置项。

    请求路径

    健康检查的HTTP Get请求的路径,函数计算向此路径发送HTTP Get请求做健康检查。取值必须以/开头。

    首次探测延迟时间

    首次健康检查之前,延迟等待的时间。

    探测时间间隔

    发送HTTP GET请求的周期。

    探测超时时间

    HTTP GET请求超时的时间,超过设置的该值,则认为请求失败。

    最大失败次数

    HTTP GET请求失败阈值。健康检查循环执行期间,HTTP GET请求连续失败次数达到设置的该值时,健康检查状态被判定为检查失败。

    探测成功阈值

    HTTP GET请求成功阈值。健康检查循环执行期间,HTTP GET请求连续成功次数达到设置的该值后,健康检查状态被判定为检查成功。

步骤三:验证健康检查配置情况

  1. 在函数配置页面,选择代码页签,单击测试函数,查看函数运行结果。

    步骤一的代码示例,函数实例健康检查正常,返回结果为OK。

  2. 修改代码中的健康检查部分为下面的代码,然后单击部署代码,代码部署成功后,再次单击测试函数,查看函数运行结果。

    修改后的代码内容如下。

    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');
    });

    函数实例健康检查将总是返回500错误码,再次执行函数,返回的信息如下。

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

更多信息

除控制台外,函数计算还支持调用API配置实例的健康检查功能。更多信息,请参见:更新函数配置健康检查。

相关文章

版本管理 2025-04-16 14:38

函数计算支持版本管理功能,帮助您更高效地管理函数以及触发器。您可以通过版本管理功能发布多个版本的函数,实现软件开发生命周期中的持续集成和发布,确保函数的稳定性和可靠性。

别名管理 2025-04-16 14:38

函数计算支持为函数版本创建别名。结合别名和版本功能,实现软件开发生命周期中的持续集成和发布。本文介绍别名的含义以及如何通过

使用版本和别名实现灰度发布 2025-04-16 14:38

您可以为函数发布一个或多个版本,版本就相当于函数的快照,当您发布版本时,函数计算会为您的函数生成快照,并自动分配一个版本号与其关联。您还可以为函数的版本创建别名,指向该版本。结合函数的版本和别名,您可以轻松实现发布、回滚以及灰度发布等功能。

标签管理 2025-04-16 14:38

函数计算支持将相同作用的函数资源通过标签Tag归类,便于搜索和资源聚合。您还可以通过标签功能将函数进行分组,可以实现不同角色对不同分组的函数拥有不同的操作权限。本文介绍标签功能的使用说明、使用限制以及如何在函数计算控制台操作标签等。

配置环境变量 2025-04-16 14:38

您可以使用环境变量,在不修改代码的前提下灵活调整FC函数的行为。环境变量作为函数配置的一部分,以字符串键值对的方式存储,不同函数拥有独立的环境变量。本文介绍环境变量的基本信息、配置方式。

配置层 2025-04-16 14:38

层(Layer)是一种集中管理函数公共依赖或资源的功能,您可以将依赖库、运行时或配置文件等内容提炼到层,供多个函数复用,减少部署函数的代码包体积的同时,实现多个函数之间的资源共享。 构建层 您可以直接使用

目录
Copyright © 2025 your company All Rights Reserved. Powered by 博智数字服务平台.
闽ICP备08105208号-1