Node.js 从AWS SQS队列中缓慢删除消息

Node.js 从AWS SQS队列中缓慢删除消息,node.js,amazon-web-services,amazon-sqs,Node.js,Amazon Web Services,Amazon Sqs,问题: 我有默认设置的SQS队列 9个消费者拉取消息,并发:100。 因此,90%的按摩时间都花在了将其从SQS中移除上。 有时队列中有200万条消息 信息-所有时间58189132:7s 25.336044ms 信息-时间delMessage58189132:7s 3.667635ms 信息-所有时间58189132:7s 25.336044ms 信息-时间delMessage90392602:6S943.837946ms 信息-所有时间90392602:6s966.396512ms 信息-时

问题:

我有默认设置的SQS队列

9个消费者拉取消息,并发:100。 因此,90%的按摩时间都花在了将其从SQS中移除上。 有时队列中有200万条消息

信息-所有时间58189132:7s 25.336044ms 信息-时间delMessage58189132:7s 3.667635ms

信息-所有时间58189132:7s 25.336044ms 信息-时间delMessage90392602:6S943.837946ms

信息-所有时间90392602:6s966.396512ms 信息-时间delMessage90392602:6S943.837946ms


我怎样才能更快地完成它?

基本上,基于消息的流程是:

  • 轮询/侦听消息
  • 接收消息
  • 工作
  • 删除消息
  • 您必须执行上述所有步骤。你不能跳过任何一步。 你只需要增加消费者的数量


    注意:只有当您负担不起这么多执行时间时,才增加使用者。否则,就让他们花点时间吧。

    这一步我都做了,偏离了路线。我显示时间。所有邮件都可以使用,但只能删除邮件。示例:全部:7s 25.336044ms和删除:7s 3.667635ms。我有9个并发性为100的使用者。在一瞬间,我们处理了900条信息,你认为我可以增加消费者吗?正如我所说的,只有当你希望你的工作快速完成时,才能增加消费者。但是,这会增加您的成本。如前所述,您将向SQS调用更多轮询调用。而且,有时可能没有消息,或者消息更少。而且,你仍然有100名消费者。因此,每种方法都有一个权衡。为了节省成本,您应该考虑将“接收消息等待时间”增加到20。默认值为零。对不起,您的问题不清楚。是什么让你认为“90%的按摩时间都花在了将其从SQS中移除上”?你能解释一下你的员工是如何处理这些信息的吗?例如,他们是如何删除消息的?您可以看到时间,因为所有处理消息的工作都花费了大约7秒。删除消息6.8秒。为了从队列中删除消息,我们使用AWS SDK的函数
    var params={QueueUrl:'STRING_VALUE',ReceiptHandle:'STRING_VALUE'/*必需*/};sqs.deleteMessage(params,function(err,data){if(err)console.log(err,err.stack);else console.log(data);})上述计时与您显示的代码有何关联?我看不到生成计时语句的语句。(顺便说一下,您可以编辑问题以插入代码。)