У меня есть файл 8gb на сервере, и я хочу загрузить 1,5 gb из этого файла с помощью HTTP-запросов. Я использую завиток.Http multirange запросов slow
Все запросы распределяются равномерно по файлу, кроме первого, которые содержат большой диапазон 500 МБ (всего 161 запрос).
Я обнаружил, что время загрузки для этого первого запроса с большим диапазоном составляет ~ 40 секунд, а общее время ~ 560 сек. Это означает, что я загружаю 500 МБ в течение 40 секунд и 1 ГБ на 520 сек. Поэтому у меня есть 6-кратное замедление для равномерно распределенных запросов. Я также заметил, что скорость загрузки падает в ~ 6-8 раз, когда это равномерно распределенные запросы выполняются.
Я не понимаю, почему это происходит. Диапазоны в каждом запросе сортируются по смещению, поэтому я не понимаю, почему мы можем получить такое замедление. Не могли бы вы объяснить, что может вызвать такой беспорядок? И, кроме того, как я могу повысить производительность для таких наборов запросов?
Я мог бы предоставить набор запросов и сроков, если это необходимо.
1) Да, каждый запрос представляет собой запрос с несколькими диапазонами. 2) Я использую новейший сервер Apache. Как я понимаю, он поддерживает такие запросы из коробки. 3) Это статический файл. Сервер не может его изменить. 4) Да, я использовал отдельный вызов curl для тестирования. Но по мере того, как я отстаю, некоторые издержки для инициализации не могут доходить до 6-кратного замедления. Я не могу загрузить весь файл, так как он также должен работать для сети с небольшой пропускной способностью. В моем случае первый запрос (с большим диапазоном) работает со скоростью около 13 Мбит/с, но для остальных запросов падает до 2 Мбит/с. – brachistochron
Можете ли вы более четко указать, что именно представляют собой разные запросы и диапазоны каждого из них? Вы говорите несколько диапазонов, но затем вы говорите несколько запросов ... Можете ли вы предоставить конкретные примеры вызова (включая URL-адрес для загрузки, если это возможно)? – jcaron
Да, у меня несколько запросов с несколькими диапазонами. Здесь вы можете найти архив с скриптом python, который запускает кучу запросов (из request.txt) https://www.dropbox.com/s/25jbzwswak8o98f/test_set.zip?dl = 0 и записать время и память для каждого запроса на стандартный вывод. Итак, чтобы воспроизвести, что вы можете просто запустить локальный сервер apache с официального сайта и поместить в него некоторый файл (~ 2gb). Я также уменьшаю запросы на диапазон 2gb, поэтому на данный момент я пытаюсь загрузить 1.5 gb из файла 2 gb. – brachistochron