我们刚刚在我们的软件中添加了一个自动更新程序,并收到一些错误报告说自动更新无法正确完成,因为下载文件的 sha1 校验和不匹配。我们托管在 Amazon S3 上...
这要么是我的代码有问题,要么是 S3 有问题。
我重新阅读了我的代码以查找可疑内容,并编写了一个简单的脚本下载并检查下载文件的校验和,并且确实偶尔出现了一些错误(昨天 40 个中有 1 个)。今天好像还可以。
你遇到过这样的问题吗?有什么解决方法吗?
额外信息:测试在日本进行。
Amazon 的 S3 在上传或下载过程中偶尔会因错误而失败——通常是“500:内部服务器”错误。错误率通常很低,但如果服务负载过重,错误率可能会飙升。错误率永远不会是 0%,所以即使在最好的情况下,偶尔的请求也会失败。
您是否正在检查自动更新程序中的 HTTP 响应代码?如果没有,您应该在执行校验和之前检查您的下载是否成功(HTTP 200)。理想情况下,您的应用程序应该重试失败的下载,因为瞬态错误是客户端需要处理的 S3 不可避免的“功能”。
值得注意的是,如果您的客户端收到 500 个错误,您可能不会在 S3 服务器日志中看到任何证据。这些错误似乎发生在请求到达服务的日志记录组件之前。
除了几周前的停机时间。我没有听说过。
他们做得很好,考虑到它有一次宕机是因为一个隐蔽的服务器错误在整个云中级联。他们对此非常开放,并在发现后立即解决。(它发生在周末,iirc)
所以他们是相当可靠的。我的建议是仔细检查您的代码。如果仍然存在问题,请将其提交给亚马逊支持。
好的,现在这有点老了,但供参考。我刚刚将几场数据从 EC2 服务器直接迁移到 s3 中。我大约每 10 分钟左右就会出现 500 个错误,代表大约 1% 的 PUT 错误率。所以,是的,S3 确实存在 500 个错误的问题。
虽然在 GET 方面没有做太多,所以不能发表评论
我同意,四重检查您的代码将是一个好主意。我并不是说它不会发生,但我不相信我曾经见过它,而且我现在已经使用 S3 相当不错了。但是,我有几次管理不善的异常/连接中断,最终得到的部分与我的预期不符。
如果他们真的发送了错误的数据,我会感到非常惊讶,但一如既往,一切皆有可能。
下载过程中从未听说过问题。这很奇怪。上传时收到大量 500 条内部服务器错误消息。这就是为什么我有一个在用户做其他事情时上传的守护进程。
您的代码中似乎没有什么,也许 S3 (或 S3-> Japan 确实有问题。)
您可以尝试启动 EC2 服务器,然后从那里运行测试(流量不会花费任何钱,所以尽可能多地使用!)并查看是否出现错误。如果你这样做了,那么你就不走运了,S3 不适合你 :)
祝你好运!
不仅仅是发送错误的数据,我想我得到了一个 ERROR403。如果我再试一次,通常没问题。
我同意:我看到很多关于人们谈论亚马逊完全倒闭的报道,但没有人谈论“有时我的访问被拒绝”错误,所以我想我这边可能有错误。我刚刚在亚马逊上设置了日志。
无论如何谢谢你!我会听从你的建议,不再指责“另一个人”。
我偶尔会收到意外的 404 错误,这些 GETs 对象是前面 LIST 的一部分,但对存储桶来说是新的,以及其他杂项。错误(例如:我的访问 ID 和密钥上的 403),但没有什么灾难性的。
我的代码在服务器端运行,所以我加入了一些强大的错误处理和日志记录。我认为每当您在网络上有一台服务器与另一台服务器通信时,这样做都是明智的。:P