通过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. 我应该期望哪些响应时间(包括一切)(大约/大致)?
1 Antwort
0

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

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

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

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

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen