我有许多并行工作者在弹性beanstalk工作环境中处理长时间运行的作业.基于队列的长度来缩放基础EC2实例.我的问题是工作人员在处理期间被终止,同时发生了缩放操作.
我最初的防止这种情况的方法如下所示:在收到来自sqs守护程序的消息后,每个worker都在保护他正在运行的EC2实例.当工作人员准备好处理作业时,他再次取消保护EC2实例.这似乎是针对这种情况的推荐方法:https://aws.amazon.com/about-aws/whats-new/2015/12/protect-instances-from-termination-by-auto-scaling/ 和除了事实之外,它没有考虑到任何放置策略.这导致所有实例都受到保护,并且大部分时间都取消了扩展操作.sqs守护进程似乎没有考虑尽可能多的工人填充实例.
我的下一个考虑是在触发缩放操作时停止sqs守护程序,例如使用自动缩放生命周期钩子.但是使用这种方法,终止受保护的实例可能仍然是一个问题(我不知道是否在受保护的实例上触发了钩子).此外,似乎不建议停止sqs守护程序:在Elastic Beanstalk上启动/停止sqsd守护程序以查看SQS队列消息
如何通过弹性beanstalk工作层满足这两个要求(1.不要阻止长时间运行的工作人员和2.尽可能多地运行每个EC2实例的工作人员)?
我想在 xray 服务映射中链接两个 lambda 函数调用,以可视化函数调用之间的连接并获得整体执行时间。我的 lambda 函数正在被 step 函数调用。启用主动跟踪时,我会在服务地图中看到各个功能,但它们之间没有连接。
_X_AMZN_TRACE_ID:包含跟踪头,其中包括采样决策、跟踪 ID 和父段 ID。(要了解有关这些属性的更多信息,请参阅跟踪标头。)如果 Lambda 在调用您的函数时收到跟踪标头,则该标头将用于填充 _X_AMZN_TRACE_ID 环境变量。如果未收到跟踪标头,Lambda 将为您生成一个。
https://docs.aws.amazon.com/lambda/latest/dg/lambda-x-ray.html
_X_AMZN_TRACE_ID 似乎包含相关信息。我的问题是,如何使用它在两个 lambda 函数调用(由 step 函数调用)之间建立连接?