【发布时间】:2022-07-19 03:16:39
【问题描述】:
我正在尝试使用 Lambda 进行并行处理。我几乎同时调用了大约 150 个 Lambda 函数。这些 Lambda 中的每一个都将它们的状态发送到相同的标准 SQS 队列。每个都发送 10 条状态消息(即 10、20、30、...、100 条),因此总共只有大约 1,500 条消息。我使用这些状态的平均值来向用户显示整体状态。
我看到所有 Lambda 都在大约 10 秒内完成工作的证据,但许多消息需要几分钟才能到达,因此即使工作完成,用户仍在等待。
消息的接收者是一个 PHP 脚本,这里是 receiveMessage 代码:
while (!$done) {
try {
$result = $sqsClient->receiveMessage(array(
'AttributeNames' => ['SentTimestamp'],
'MaxNumberOfMessages' => 10,
'WaitTimeSeconds' => 5,
'MessageAttributeNames' => ['All'],
'QueueUrl' => '<my queue>'
));
foreach ($result->search('Messages[]') as $message) {
...
即使 WaitTimeSeconds 为 0(短轮询)也是一样的速度。
在控制台中,传递延迟设置为 0。
我做错了什么?有没有办法配置或编码以几乎与发送消息一样快?谢谢!
【问题讨论】:
标签: amazon-web-services amazon-sqs