Вопрос или проблема
При загрузке больших файлов, > 10MB, через squid V5.6 я заметил, что они не удавались и/или повторялись.
Ошибка была зарегистрирована несколько раз в логах:
1671092710.452 423 ::1 TCP_MISS_ABORTED/000 0 PUT http://YOUR_URL - FIRSTUP_PARENT/YOUR_UPSTREAM_PROXY -
Как я могу настроить загрузку этих больших файлов без ошибок?
После множества исследований и тестирования настроек squid я обнаружил, что это, скорее всего, ошибка.
См. https://bugs.squid-cache.org/show_bug.cgi?id=5214
Обходной путь – задать параметр client_request_buffer_max_size
на значение, которое покрывает максимальный размер загружаемого файла, и/или включить функцию многокомпонентной загрузки на стороне клиента, если она доступна.
Я провел несколько тестов и не заметил никаких проблем с ресурсами хоста даже со значением 100MB
.
По возможности попробуйте переключиться на различных клиентов. У меня это сработало с CLI клиентами. Из браузера попробуйте выбрать другую JS библиотеку или попытайтесь настроить параметры, где это возможно (например, размер частей, количество попыток и т.д.).
Я обнаружил, что различные клиенты вели себя по-разному. wget из альпин не работал, а python “requests” работал нормально (в одном и том же контейнере); wget из убунту также работал нормально.
Ответ или решение
Для решения проблемы с ошибкой TCP_MISS_ABORTED/000 при загрузке больших файлов через Squid версии 5.6 необходимо рассмотреть несколько подходов и настроек, которые помогут устранить это раздражающее недоразумение.
1. Изменение конфигурации Squid
Увеличьте размер буфера клиентских запросов
Для того чтобы справиться с проблемой загрузки файлов размером более 10 МБ, необходимо изменить параметр client_request_buffer_max_size
в конфигурации Squid. Данный параметр определяет максимальный размер буфера для клиентских запросов. Если размер по умолчанию недостаточен для ваших загрузок, это может привести к ошибкам.
Пример настройки в файле конфигурации Squid:
client_request_buffer_max_size 100 MB
Увеличение этого значения до 100 МБ позволяет избежать проблем с ограничением размеров запросов при загрузке крупных файлов.
2. Изменение параметров клиента
Используйте многопоточную загрузку
На клиентской стороне рекомендуется включить возможность многопоточной или многосегментной загрузки файлов. Это может существенно уменьшить вероятность возникновения ошибок, связанных с вызовами одного большого запроса.
Переключитесь на другие клиентские приложения
Ваш выбор клиентского приложения может значительно повлиять на успех загрузки. Ваша проблема может быть специфической для определенной реализации HTTP-библиотеки. Например, инструмент "wget" в окружении Alpine может вызывать ошибки, в то время как использование Python библиотеки "requests" или "wget" в системе Ubuntu может успешно выполнять загрузки. Эксперимент стоит начинать с разных библиотек и окружений.
3. Обратитесь к баг-трекеру
В соответствии с вашими находками, описанной ошибке уже присвоен номер 5214 в баг-трекере Squid. Возможно, ваш случай является частью более широкой проблемы, которую разрабываются уже устранили или планируют устранить в будущих версиях.
Заключение
Применение вышеупомянутых методов и рекомендаций позволит избежать ошибок при загрузке больших файлов через Squid. Изучение новых конфигураций и выбор правильного клиентского приложения изменят ваш опыт загрузки к лучшему. Всегда держите ваше программное обеспечение обновленным и следите за доступными исправлениями, чтобы улучшить надёжность работы с инструментами.