通过AWS SDK运行Step Functions的启动执行时延

0

【以下的问题经过翻译处理】 我有一个Step Functions Express状态机,我使用AWS SDK for PHP(StartExecution API)启动执行。我的代码运行在一个负载均衡的Beanstalk应用程序中的EC2实例上(Docker容器在t3.micro上)。启动执行的API调用总时间(包括一切)在155毫秒到500毫秒之间。平均值大约是200毫秒。这很高,对我们来说是一个问题。我的第一个问题是,这是否异常高,还是正常的?

我尝试通过API Gateway启动相同的工作流,并看到了大致相同的响应时间(可能略低)。我还尝试使用DynamoDB表的PutItem API,平均时间约为200毫秒。我是否正确地认为这些数字应该更低?

如果我的假设是正确的,我认为可能是由我EC2实例到AWS API的网络路径引起的。我的Beanstalk应用程序没有使用VPC(虽然EC2实例在默认VPC中)。也许通过使用VPC和PrivateLink(VPC接口终结点)可以改善情况?https://docs.aws.amazon.com/step-functions/latest/dg/vpc-endpoints.html

所以;

  1. 平均200毫秒是异常高的吗,还是可以预期的?
  2. 如果答案为1,使用VPC/PrivateLink是否能够改善这种情况?
  3. 我应该期望哪些响应时间(包括一切)(大约/大致)?
profile picture
专家
已提问 10 个月前136 查看次数
1 回答
0

【以下的回答经过翻译处理】 在这里使用VPC端点不会对延迟产生任何明显影响,所以我不建议使用,除非您想出于其他原因使用私有端点(例如,通过NAT网关减少流量)。

我们不提供有关调用AWS服务API的延迟(最短、最长、平均)的指导。如果您认为存在问题,最好的建议是提出支持案例,因为团队可以查看配置的步骤函数,并确定服务本身是否存在任何问题。

我还要补充的是,所有AWS服务都是多租户的(以某种方式),执行操作所需的时间将有所差异(API调用就是一个很好的例子)。我们尽最大努力确保所有客户都可以“公平”地访问服务,并减少“嘈杂的邻居”的影响,但在大规模系统中,某些操作的延迟有时会有所变化。

有很多因素加起来会造成延迟。例如:在调用 AWS 服务时,底层库必须设置 TCP 连接(因此那里有三方握手),然后执行 TLS 协商(相当多的数据包),然后才能发送请求。你可以考虑在编写代码时让这些连接一直处于打开状态(这可以通过在初始化时调用 “读取” API 来完成),这样你的其他调用就会更快。

profile picture
专家
已回答 10 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则