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