Pergunta

Acabamos de adicionar um autoupdater em nosso software e recebemos algum relatório de bug dizendo que a atualização automática não seria concluída corretamente porque a soma de verificação sha1 do arquivo baixado não estava correspondendo.Estamos hospedados no Amazon S3...

Isso é algo errado com meu código ou algo errado com o S3.

Reli meu código em busca de coisas suspeitas e escrevi um script simples baixando e verificando a soma de verificação do arquivo baixado e, de fato, recebi alguns erros de vez em quando (1 em 40 ontem).Hoje parece tudo bem.

Você passou por esse tipo de problema?Existe algum tipo de solução alternativa?

informação extra:teste foi realizado no Japão.

Foi útil?

Solução

Além do tempo de inatividade de algumas semanas atrás.Nenhum que eu tenha ouvido falar.
Eles fizeram um bom trabalho, considerando que a única vez que ele caiu foi por causa de um erro obscuro do servidor que se espalhou pela nuvem.Eles foram muito abertos sobre isso e resolveram assim que descobriram. (aconteceu durante um fim de semana, iirc)

Então eles são bastante confiáveis.Meu conselho é verificar seu código.E leve isso ao suporte da Amazon se ainda for um problema.

Outras dicas

O S3 da Amazon ocasionalmente falha com erros durante uploads ou downloads – geralmente "500:Erros do servidor interno".A taxa de erro normalmente é muito baixa, mas pode aumentar se o serviço estiver sob carga pesada.A taxa de erro nunca é 0%, portanto, mesmo na melhor das hipóteses, a solicitação ocasional falhará.

Você está verificando o código de resposta HTTP no seu atualizador automático?Caso contrário, você deve verificar se o download foi bem-sucedido (HTTP 200) antes de realizar uma soma de verificação.Idealmente, seu aplicativo deve tentar novamente downloads com falha, porque erros transitórios são um "recurso" inevitável do S3 com o qual os clientes precisam lidar.

É importante notar que se seus clientes estiverem recebendo 500 erros, você provavelmente não verá nenhuma evidência disso nos logs do servidor S3.Esses erros parecem ocorrer antes que a solicitação chegue ao componente de log do serviço.

ok, isso tudo é um pouco antigo agora, mas para referência.Acabei de executar a migração de vários gigabytes de dados de um servidor EC2 diretamente para o s3.Estou recebendo 500 erros a cada 10 minutos ou mais, representando uma taxa de erro de cerca de 1% dos PUTs.Então, sim, o S3 tem um problema com 500 erros.

Não fiz muito em termos de GET, então não posso comentar

Eu concordo, verificar seu código seria uma boa ideia.Não estou dizendo que isso não possa acontecer, mas não acredito que já tenha visto isso, e já usei bastante o S3.No entanto, gerenciei mal exceções/quebras de conexão algumas vezes e acabei com peças que não correspondiam ao que eu esperava.

Eu ficaria muito surpreso se eles realmente enviassem dados incorretos, mas, como sempre, tudo é possível.

Nunca ouvi falar de problema durante o download.Isso é estranho.Recebo TONELADAS de 500 mensagens de erro interno do servidor durante o upload.É por isso que tenho um daemon que faz upload enquanto o usuário está fazendo outra coisa.

Não parece haver algo no seu código, talvez haja realmente algo errado com o S3 (ou com o S3-> Japão).

Você pode tentar iniciar um servidor EC2 e apenas executar o teste a partir daí (o tráfego não custará nenhum dinheiro, então use o quanto quiser!) e veja se há erros.Se fizer isso, você estará sem sorte e o S3 não é para você :)

Boa sorte!

Mais do que enviar dados ruins, acho que recebi um ERRO403.Se eu tentar novamente, geralmente tudo bem.

E eu concordo :Eu vi muitos relatos sobre pessoas falando sobre a Amazon estar totalmente fora do ar, mas ninguém falando sobre um erro "às vezes meu acesso é recusado", então acho que pode haver um erro da minha parte.Acabei de configurar o log na Amazon.

De qualquer forma, obrigado!Vou seguir o seu conselho e parar de culpar "o outro cara".

Ocasionalmente, recebo erros 404 inesperados com objetos GETs que fazem parte de uma LIST anterior, mas novos no intervalo, e outros itens diversos.erros (por exemplo:403 no meu ID de acesso e chave secreta), mas nada catastrófico.

Meu código é executado no lado do servidor, então coloquei algum tratamento e registro robusto de erros.Eu acho que isso é uma coisa sábia a se fazer a qualquer momento você tem um servidor na rede se comunicando com outro servidor.:P

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top