为什么设置健康检查后健康检查失败?

本文介绍使用SAE时,如何排查健康检查失败的原因。

问题现象

SAE环境中设置健康检查,出现健康检查失败现象。

问题原因

  • 健康检查的参数配置有误。
  • 健康检查所需的命令缺失。

解决方案

健康检查失败的排查步骤如下。

  1. 参见设置健康检查,确认延迟时间(秒)超时时间检查周期(秒)三个参数设置无误。

    首次部署SAE时,健康检查失败的常见原因如下。

    例如,您的程序启动需要120秒,但是延迟时间设置为60秒;或者,您的接口响应时间存在2秒的波动,但是超时时间设置为1秒。这些场景中,参数的取值有误,您需要按实际情况进行修改。

  2. 查看应用事件,进一步明确失败的原因。sc_view_application_events_to_find_why_health_check_failed

    如果健康检查失败,原因会在应用事件中透出。

    如果是运行态健康检查失败,可以结合基础监控(CPU、Load、TCP连接数)排查,Java语言还可以结合应用监控进一步排查。

  3. SAE的HTTP检查依赖容器curl命令、TCP检查依赖容器内的telnet命令。所以,如果您采用自定义镜像部署,需要在镜像内安装上述命令,否则会造成健康检查失败。
  4. SAE会在HTTP和TCP检查的设置区域,生成健康检查的命令。如果您可以通过Webshell进入容器,可以尝试在Webshell内执行该命令,确认是否失败。sc_configurate_liveness
  5. 如果因为健康检查失败导致容器反复重启,而无法进入Webshell,建议您删除Liveness的健康检查配置,重新部署应用,确保程序能够启动,再进一步排查。