2013-03-28 19 views
5

Aktualnie zautomatyzowałem skrypt budowania, aby przesłać zasoby do Amazon s3 i używam http://s3tools.org/s3cmd (i https://github.com/s3tools/s3cmd), co zrozumiałem jako normalne/główne narzędzie wiersza poleceń do użycia . Nie było to zbyt skomplikowane, a większość testów wykonywałem poza biurem, ale jak tylko tam wszedłem, wszystko zaczęło się rozpadać, a ja jestem szalony zdezorientowany.Operacje POST lub PUSH od s3cmd kończą się niepowodzeniem na określonym połączeniu internetowym

Proste polecenie podobne (zarówno „mybucket” istniejącej na S3 i „file.ext” istniejącego w katalogu biegnę z polecenia),

s3cmd put file.ext s3://mybucket/ 

został z braku albo

[Errno 104] Connection reset by peer 

lub

[Errno 32] Broken pipe 

wiem, że jest to problem z S3 z plikami ponad 5GB wielkości, ale te pliki są nigdzie ich nie ma, mniej niż 1MB, nie licząc więcej niż 1GB. Naprawdę dziwne było to, że inny program, http://www.bucketexplorer.com/ działał doskonale, wykonując dokładnie te same operacje w tej samej sieci.

Jeszcze dziwniejszy nadal był do przetestowania wszystkiego, przywiązałem mój laptop do połączenia 3G telefonu, i od razu wszystko działało idealnie ponownie, a kiedy wróciłem do domu i przetestowałem polecenia tam ponownie, działało idealnie jeszcze raz.

Masz pomysł, co może być przyczyną tego błędu w naszej sieci roboczej, z s3cmd, ale nie z Bucket Explorer?

Odpowiedz

1

Przyczyn tego błędu może być wiele, np. TCP window scaling (lub this one) i DNS propagation. Udało mi się obejść ten problem, używając niewielkiego rozmiaru wieloczęściowego 5MB:

s3cmd put --multipart-chunk-size=5 file.ext s3://mybucket/