Amazon SNS消息的预期SLA(服务级别协议)是什么?

时间:2016-06-28 07:26:00

标签: amazon-web-services amazon-sns aws-lambda

我正在尝试评估SNS是否正在构建一个实时应用程序,并且需要非常快速的转换时间<传递信息需要2秒钟。

由于我位于亚太地区,我在新加坡有一个SNS,在美国东部地区的Lambda有一个订户。

鉴于此设置,我运行了一个代码,试图找出调用lambda的延迟并进行零处理并记录时间。有人可能会说你在这种情况下也考虑了lambda调用延迟。这是真的。我需要调用Lambda并执行并回复到< 2秒。

我发送了23914条消息,其中我有平均653.520毫秒的传输+ lambda调用。 峰值大约600995毫秒(约10分钟),这是像pubsub这样的技术的潜在延迟。 enter image description here 大约20117年消息由lambda发送和接收< 653毫秒,这意味着3797个数据包或15%比平均时间更多。

2958条消息或12.36%消息需要1秒才能执行。 379条消息或1.59%消息需要2秒才能被调用和执行(这意味着1.6%的消息不能被视为实时且必须被忽略) 超过10秒的82条消息 64秒超过20秒 它持续到约45秒,之后延迟是10分钟。我有3包,延迟10分钟。

困扰我的是,大约2%(如果你也包括处理时间)我的消息无法实时处理,只需要一小部分~24K的消息。

在我想要呈现的比例计算中,要求我每月处理大约2160亿条消息。在这种规模上,我担心我将无法实时处理43亿条消息。

鉴于这种体验,我不确定SNS的扩展程度。那些#of不到实时的消息(读取> 2秒延迟)会更多吗?还是会减少?

现在可能有人质疑我的互联网连接可靠性,我在EC2上做了这个实验并得到了非常相似的结果。

事实上,在同一时间内匹配的时间延迟类型。

  

具体问题

     
      
  1. SNS性能的SLA是什么?
  2.   
  3. 间接地:这些SLA如何转换为AWS Lambda服务?
  4.   
  5. 有关这些延误可能发生在何处的任何理由?
  6.   

2 个答案:

答案 0 :(得分:0)

这里发生的事情很可能是对Lambda函数的限制。 concurrent Lambda invocations is 100的默认限制。如果您发送了20K消息,则可能超出了该限制,尽管lambda的运行时间很短。当您的lambda函数在执行SNS请求时受到限制时,请求将进入重试队列并最多重新执行3次,这通常会在很长一段时间内发生(最多一个小时)。

您可以在该功能的CloudWatch指标中查看限制数量(不幸的是,您在发布CloudWatch保留6个月之前运行了测试)。

答案 1 :(得分:0)

最后我检查了SNS没有SLA。 SNS设计为可水平扩展,并且(几乎)永远不会丢弃消息而不能快速交付。

是否有任何理由可以通过API从发布者调用lambda并将数据存储在传递给调用的事件中?