Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: upload module: aborted uploading file (4Gb barrier)
Valery Kholodkov пишет:
Rush пишет:
Спасибо всем, кто откликнулся ! Не знаю как ответить всем
откликнувшимся сразу - отвечу сам себе, авось заметите:
1. Потери в сети 0% гарантированно, у меня прямой гигабытный линк на
сервант Intel(R) Xeon(R) CPU E5410 @ 2.33GHz 8Gb + какая то нихреновая
корзина на 10 террабайт. Может слишком быстрый сервант и nginx'у не
нравится что 50метров в секунду летит ? Сомневаюсь, думаю в рамблерах
всяко покруче.
2. abort случается и при скорости 1 гигабит, и 100Мбит, и даже 10 (!)
3. Обламываются только большие файлы (>2Gb) и в самом конце закачки
(??? почему ???)
Насколько я понимаю в современных интернетах, то в них по-видимому есть
две причины этому:
1) Загрузка забила очередь некоторого сетевого устройства и оно
отбрасило часть пакетов;
2) Пока загружали файл произошло рассогласование маршрутов и часть
пакетов потерялась.
Что касается размера, то это, возможно, объясняется теорией больших
чисел. А именно, если вероятность потери пакета составляет, скажем, 1 на
миллион, то для загрузок файлов, состоящих из более чем миллиона пакетов
она будет систематически реализоваться.
s/теорией больших чисел/законом больших чисел/
Вообще, для решения этой проблемы я написал возобновляемую загрузку:
http://github.com/vkholodkov/nginx-upload-module/tree/partial-upload
Клиентский код пока не могу открыть, потому не я его писал. Но он
достаточно прост и состоит из кода, который использует Google Gears и
класс Blob.
--
Best regards,
Valery Kholodkov
|