代码之家  ›  专栏  ›  技术社区  ›  WomenWhoCode

估计SQS处理时间和负载

  •  0
  • WomenWhoCode  · 技术社区  · 7 年前

    我将使用AWS SQS(常规队列,而不是FIFO)来处理不同的客户端度量。

    我创建了一个应用程序,它将侦听我的SQS队列,并处理来自它的消息。

    • 阅读SQS消息->
    • 呼叫S3客户端->

    对于队列中的每个SQS消息,将执行类似的过程。S3文件的大小很小,小于0,5 KB

    2 回复  |  直到 7 年前
        1
  •  3
  •   Krease    7 年前

    如何计算我是否能够每秒处理400条消息?我如何估计我的解决方案能够处理x5的数据增长?

    • 在单个主机和单个线程上,数学很简单:
      • 1000 / AvgTotalTimeMillis = AvgMessagesPerSecond
      • 1000 / AvgMessagesPerSecond = AvgTotalTimeMillis

    如何进行测试:

    • ,并为您概述的每个步骤生成一些计时指标以及总时间。

      • 计算您的平均/最大/最小时间,以及每秒转换为的消息数
      • 单线程上每秒400条消息&主机将在每封邮件3ms以下。希望这能使您明显地需要多个线程/主机。
    • 放大!

      • 现在,您已经知道了单个线程可以处理多少个线程,请计算出单个主机可以有效处理多少个线程(您需要进行实验)。在可能的情况下考虑批处理消息- SQL提供批处理操作。
      • 使用数学计算您需要多少台主机
      • 如果你需要5倍的数字,从那里开始
    • 当你在做数学的时候, :

      • 查看SQS/S3/Firehose/等的节流限制。如果您计划使用Lambda而不是EC2来完成工作,它也有限制。确保你在这些限制之内,并且考虑如果你接近AWS,他们会联系AWS支持。

    • M5.large 应该足够了—您可能可以做得更小,因为性能瓶颈可能是获取和发送消息的网络I/O。
        2
  •  1
  •   John Rotenstein    7 年前

    确定这一点的唯一方法是创建一个反映您的场景的测试环境。

    如果您的解决方案设计为并行处理消息,那么应该可以扩展您的系统以处理几乎任何工作负载。

    一个好的架构是使用AWS Lambda函数来处理消息。Lambda默认为1000个并发函数。因此,如果一个函数需要3秒钟才能运行,它将始终支持每秒333条消息。您可以请求增加Lambda并发性以处理更高的工作负载。