-
Есть ФТП сервер и на него нужно ОЧЕНЬ быстро залить файлы. Скажем нужно залить 1000 файлов. Есть идея если сделать несколько (скажем пять) ФТП соединений к одному и тому же серверу и с каждого соединения заливать по одному файлу то скорость увеличится в пять раз.
Так ли это?
-
нет, не так.
-
То есть первое соединение будет заливать файлы 1-200, второе 201-400 ... и т.д.
-
> Сергей М. © (30.03.08 13:52) [1] > нет, не так.
А как?
-
да никак.
Многопоточность не увеличивает сквозную производительность.
-
> webSQLNeederr (30.03.08 13:53) [3] > А как?
Ширина канала не зависит от количества передаваемых данных. Если в трубу влезает только одно яблоко, то сколько бы ты не пытался туда засунуть ОДНОВРЕМЕННО, влезет вреравно только одно.
-
Кстати, без понимания таких эдементарных вещей, не стоит браться за сетевое программирование. Сначала надо бы изучить матчасть.
-
> webSQLNeederr (30.03.08 13:50)
каких файлов? может их сжимать имеет смысл?
-
Так ли это?
Так. Если фтп сервер рубит скорость сессии, а пропускная способность канала от тебя до фтп нигде не меньше этого пятикратного лимита.
-
Разные случаи бывают.
Например, бывают FTP которые ограничивают количество соединений с одного IP очень небольшой величиной.
Бывает другой случай, когда связь с сервером все время рвется или сам сервер дохлый, и приходится все время по новой соединяться и докачивать файл. При этом клиент очень долго ждет, пока убедится, что сеанс на самом деле прервался. Так что коннект половину своего жизненного цикла ждет возобновления передачи при уже отсутствующем коннекте. В этом случае (если сервер позволит) ускорить дело можно одновременным запуском множества соединений.
Вообще здесь можно придумать много разных интересных алгоритмов, как должен действовать клиент при плохой связи. Менеджеры закачек типа ReGet соревнуются между собой, у кого алгоритм эффективнее. Наверняка есть серьезные исследования на эту тему. Правда здесь не загрузка на сервер, а скачка с сервера, но это дела не меняет.
|