performance - Azure 队列延迟消息

标签 performance azure azure-storage azure-queues

我在 azure 队列消息的生产部署上有一些奇怪的行为: 队列中的某些消息的显示延迟很大 - 几分钟,有时 10 分钟。 在您询问当我们将消息放入队列时设置delayTimeout之前 - 我们不会为该消息设置delayTimeout,因此消息应该在放入队列后几乎立即出现。 那时我们的负担并不大。所以我的实例没有工作负载,并且能够快速处理消息,但它们就是不出现。

我们的服务每月处理数百万条消息,我们能够识别出 10-50 条消息的处理延迟非常大,因此我们在客户面前未能达到 SLA。

有谁知道原因是什么?

如何克服?

有人遇到过类似的问题吗?

最佳答案

故障排除的一些一般想法:

  1. 您确定该消息已排队等待处理 - 即queue.addmessage操作成功返回,然后您等待10分钟 - 这意味着您可以排除任何客户端重试策略等导致问题所在。

  2. 时间计算是否有可能遇到某种时钟偏差问题。例如 - 如果拉取消息的工作角色之一与其他工作角色不同步,您可能会看到这一点。

  3. 在消息出现延迟的情况下,负责拉取消息的工作角色是否实际上失败或崩溃了?如果客户端调用 GetMessage 但未在 invisibilityTimeout 设置指定的时间内以适当的确认进行响应,则该消息将再次变得可见,因为队列服务假定客户端未处理该消息。您可以通过查看这些耗时较长的消息的出队计数来判断这是否是一个影响因素。更多信息可以在这里找到:http://msdn.microsoft.com/en-us/library/dd179474.aspx

  4. 是否有可能在一天中的某些时间,您从队列中提取项目的工作人员数量不足,而延迟仅仅是由于队列填充速度快于您从队列中提取消息的速度而导致的。

  5. 您是否启用了队列日志记录,然后查看是否可以找到特定操作(查看 e2elatency 和 serverlatency)。 http://blogs.msdn.com/b/windowsazurestorage/archive/tags/analytics+2d00+logging+_2600_amp_3b00_+metrics/ 。您还应该启用客户端日志记录并尝试确定客户端是否存在连接问题以及重试逻辑是否可能启动。

最后,如果这些似乎都没有帮助,您可以将服务器日志(最好还有客户端日志)以及您的帐户信息(无密码)发送给 Microsoft dot com 的 JAHOGG。

杰森

关于performance - Azure 队列延迟消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23283809/

相关文章:

c - 使用循环平铺转置大型二维矩阵没有性能提升

c# - 聊天机器人异常 : OnTurnAsync exception-- Operation returned an invalid status code 'BadRequest'

c# - 用于执行大规模并行查询的通用类。反馈?

asp.net - 文件上传和结果池杀死了 ASP.NET Web 应用程序

python - 简化python中的循环

azure - 如何使用.net Core获取传入请求的ip地址

azure - 如果我部署两个 Azure Web 角色,是否需要设置计算 secret 钥?

powershell - 使用 powershell 删除 azure 存储帐户

Azure Blob 存储 - 当新文件上传到 Blob 容器中的特定文件夹时设置警报

performance - 如何在Haskell中使用内联的相位控制?