2015-02-10 179 views
1

我有一个移动应用程序,并将图像放入Azure存储Blob中。当我们的几个人(测试和测试版)测试时,它都很好。但是当我们发布它到beta版本并且有数百个(可能超过一千个)用户使用时,很多用户报告他们看不到图像。它发生在他们的iPhone和许多不同品牌的Android手机上。有时候,对于相同的图像,在一部手机上它是好的,但在另一部手机上却不显示。Azure存储Blob错误 - AnonymousClientOtherError和AnonymousNetworkError

当我检查BLOB日志,我看到了很多的错误,主要是这两个:

  1. AnonymousClientOtherError; 304

“匿名请求失败如预期,最常见的请求失败指定前提条件 GET请求失败前提条件检查(如If-修改等)的匿名请求总数 示例:检查失败的条件GET请求。 (来自微软)

  • AnonymousNetworkError; 200
  • “这个错误的最常见的原因是客户端的超时在存储服务期满之前断开。您应该调查的代码在客户端了解客户端与存储服务断开连接的原因和时间,还可以使用Wireshark,Microsoft Message Analyzer或Tcping来调查客户端的网络连接问题。“(来自微软) - 这是一个问题一个错误,但为什么它是200?

    我不知道这是否是导致我的问题的原因?

    对于第一个,从我的理解来说,这实际上并不是一个错误,它只是说缓存的版本与服务器版本相同。但是,当我的客户端看到这个响应时,它认为这是一个错误并抛出异常,因此没有显示图像? (我实际上外包了我的客户端,所以我只能猜测)

    对于第二个,是因为我的客户端的超时比服务器端的超时短吗?但是连接超时或套接字超时是否超时?客户端和Azure Blob上的默认值是什么?

    我的Azure服务器位于东亚(香港),但我的用户在中国大陆。我想知道这是否会导致问题?但是当少数用户在中国进行测试时,这一切都很好。

    许多图像实际上非常小,只有一到两百k。有些只有11k。

    我不明白是什么原因...

    回答

    0

    这些公众可访问的图像?如果是的话,我们建议使用CDN为Azure中的Blob提供服务,因为随着您扩大消费者数量,您可能会遇到单个流行映像的限制。

    此外,最好确保应用程序和Azure存储之间没有网络问题,这会导致您的最终用户客户端在存储服务中的超时过期之前断开连接。第一步是使用Wireshark或Microsoft Message Analyzer来调查网络连接问题。请按照监视器附录中的“使用Wireshark捕获网络通信”(http://azure.microsoft.com/en-us/documentation/articles/storage-monitoring-diagnosing-troubleshooting/)部分,诊断Microsoft Azure存储并对其进行故障排除,以确定问题是否由网络丢失引起。