为什么我的应用程序实例无法按预期进行缩减?
当到应用程序的流量减慢,使应用程序开始缩减时,您会观察到实例不会消失。
当入局工作负载对应用程序减慢时,Code Engine 将开始根据其配置的缩放值自动缩减应用程序。Code Engine 向应用程序发送 SIGTERM 消息。 您的代码必须对此信号作出反应并关闭。 如果代码未处理 SIGTERM 消息,那么在配置的请求超时值 (缺省值为 300 秒) 期间,应用程序实例仍处于 Terminating 状态。
尝试其中一个解决方案。
-
查看有关缩放工作方式的文档。 请参阅 配置应用程序缩放。
-
查看为应用程序自动缩放配置的值。
- 在控制台中,转至应用程序的页面。 自动缩放设置位于 配置> 运行时 选项卡上。
- 使用 CLI,运行
ibmcloud ce app get命令以显示应用程序的详细信息。
-
确保代码处理 SIGTERM 消息。 要使应用程序完全缩减,应用程序代码必须处理 SIGTERM 信号。 当 Code Engine 自动向下缩放时,会向应用程序发送 SIGTERM 信号。
以下代码示例处理 SIGTERM 消息,因为它会在应用程序接收到实例结束的信号后关闭与应用程序启动的 HTTP 服务器的连接。
const server = // start the HTTP server process.on('SIGTERM', () => { console.info('SIGTERM signal received.'); server.close(() => { console.log('Http server closed.'); }); }); -
查看应用程序实例的详细信息,以帮助您对应用程序进行故障诊断。 请参阅 获取有关应用程序实例的详细信息。