vertex ai在线端点上的自定义容器仍在预测时接收sigterm 我使用Vertex AI的在线预测端点的自定义容器。我将其设置为Max Replicas 4和Min Replicas 1(Vertex Online端点有Min 1)。现在我的工作量推断...

问题描述 投票:0回答:0

部署到端点时设置了尺度,如下所示:

--autoscaling-metric-specs=cpu-usage=70 --max-replica-count=4

我的问题是,尽管它仍然有待处理的请求/当它完成推理/中间推理时,一些容器会获得sigterm且结束。每个工人的持续时间各不相同。
信号收到-15,安全关闭。主机名:PGCVJ,有829个未决请求,容器运行为4675.025427341461秒

信号收到-15,安全关闭。主机名:W5MCJ,有83个未决请求,容器运行为1478.7322800159454秒
信号收到-15,安全关闭。主机名:N77JH,有12个待处理的请求,容器运行为629.7684991359711秒

为什么会发生这种情况,以及如何防止我的容器关闭?背景线程被催生

thread = Thread( target=inference_wrapper, args=(run_inference_single_document, record_id, document_id, image_dir), daemon=False # false so that it doesnt terminate while thread running )

dockerfile:

ENTRYPOINT ["gunicorn", "--bind", "0.0.0.0:8080", "--timeout", "300", "--graceful-timeout", "300", "--keep-alive", "65", "server:app"]

当CPU使用减少/不再收到其他预测时,该容器关闭了吗?还是这与Docker工人计时有关?

我怎么可以调试这个 - 我所看到的是,关闭处理程序被调用,然后在日志中退出的工人后来。

如果您的应用程序仍在预测何时接收Sigterm,则意味着容器在完成预测之前就终止了。
要处理此操作,您可以在应用程序中实现Sigterm处理程序。当处理程序收到Sigterm时,它应该开始失败准备探针。这将防止新的请求路由到容器,并允许其在关闭之前完成当前请求的处理。

写入组件以取消基础资源。您可以访问此公共文档,其中包括示例代码,该示例代码显示了如何附加Sigterm Handler。
	

docker google-cloud-platform autoscaling google-cloud-vertex-ai
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.