Amazon web services 在s3中,400k文件上传的500万条消息是如何计数的

Amazon web services 在s3中,400k文件上传的500万条消息是如何计数的,amazon-web-services,amazon-s3,amazon-sqs,Amazon Web Services,Amazon S3,Amazon Sqs,我已经配置了AWS管道,以便S3中的对象创建事件创建SQS消息。我使用的是标准的SQS队列。上周,当我注意到400k.3des文件需要很长时间才能处理时,问题浮出水面。应用程序日志显示,我的代码逻辑必须在3天内处理近500万条消息,但aws命令显示仅上载了400k文件,aws控制台显示的消息计数从未超过500k 我的研究表明,标准队列可能会创建重复的消息,但是消息计数应该以百万为单位显示,而这是从来没有过的。对于较小的数据集,我还不能复制这个问题,因为每个对象上传都会创建一个SQS消息 我不知道

我已经配置了AWS管道,以便S3中的对象创建事件创建SQS消息。我使用的是标准的SQS队列。上周,当我注意到400k.3des文件需要很长时间才能处理时,问题浮出水面。应用程序日志显示,我的代码逻辑必须在3天内处理近500万条消息,但aws命令显示仅上载了400k文件,aws控制台显示的消息计数从未超过500k

我的研究表明,标准队列可能会创建重复的消息,但是消息计数应该以百万为单位显示,而这是从来没有过的。对于较小的数据集,我还不能复制这个问题,因为每个对象上传都会创建一个SQS消息


我不知道可能的原因是什么。

我想你不知道每封邮件在哪里发送了10次以上。既然您提到了应用程序日志,我将假设您在某个服务器上运行了一个进程

我的第一个想法是,您的应用程序服务器开始出现性能问题,无法在超时之前处理每个SQS消息。这将导致SQS将消息放回队列中

问题是你如何证实这一点?如果进入SQS仪表板并选择SQS,然后单击监控选项卡。确保更新您的时间范围,因为它默认为一小时。由于这是一个多星期前的事了,您可能希望使用CloudWatch->Metrics,因为您可以创建一个绝对时间范围,将数据限制在问题发生时

首先,让我们确认SQS度量与您的应用程序度量是否匹配所讨论的时间窗口: NumberOfMessagesSent:这应该等于400k。 NumberOfMessagesReceived:这应该等于500万。 NumberOfMessagesDeleted:这应该等于大约500k。 ApproximateAgeOfOldestMessage:随着邮件等待处理,这一数字应在3天内增加

如果你没有得到这些数字,那么发布你的指标,因为它将提供更好的洞察力

你还有几个问题需要考虑。 -你有多少人? -如果在处理邮件之前不删除邮件,则ApproximateEnumberOfMessagesNotvisable度量应接近接收者的#。如果为>,则应用程序不会删除消息。如果为<,则表示应用程序在超时之前未处理消息


很难告诉你到底发生了什么,但希望这会有所帮助

当从S3触发事件时,SQS可能受到限制