Squid3 кеширование сайтов работает, но не для больших файлов, несмотря на максимальный размер в 6 ГБ.

Вопрос или проблема

Для домашней лаборатории я настроил сервер кеширования Squid 3.3.8 на CentOS 7 (минимальная версия) в качестве прокси-сервера (не в качестве шлюза по умолчанию с прозрачным кэшированием).

С клиентом Xubuntu я настроил прокси-сеть с помощью:

export http_proxy="192.168.1.15:3128"   (то же самое для https и ftp)

Веб-серфинг работает, и я вижу, что это попадает в журнал /var/log/squid/access.log. Однако большие файлы, такие как .ISO образы, не кэшируются, несмотря на 30 ГБ доступного пространства кэша и лимит размера объекта в 6 ГБ.

Как мне это диагностировать и исправить?

Я вижу два пропуска подряд в журналах, что я понял означает, что кэширование Squid не удалось.

1442197979.371 394811 192.168.1.61 TCP_MISS/200 666894705 GET http://ftp.osuosl.org/pub/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1503-01.iso - HIER_DIRECT/140.211.166.134 application/octet-stream
----
1442199880.195 414232 192.168.1.61 TCP_MISS/200 666894705 GET http://ftp.osuosl.org/pub/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1503-01.iso - HIER_DIRECT/140.211.166.134 application/octet-stream

Конфигурация Squid:

cache_dir ufs /var/spool/squid 30720 16 256
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
maximum_object_size 6 GB
cache_replacement_policy heap LFUDA
range_offset_limit -1
quick_abort_min -1 KB

Согласно этому ответу на Server Fault — и перенесенному из этой ветки на официальном сайте поддержки Squid Proxymaximum_object_size должен быть размещен выше cache_dir в файле squid.conf.

Зная это, просто измените вашу конфигурацию с этого:

cache_dir ufs /var/spool/squid 30720 16 256
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
maximum_object_size 6 GB
cache_replacement_policy heap LFUDA
range_offset_limit -1
quick_abort_min -1 KB

На это:

maximum_object_size 6 GB
cache_dir ufs /var/spool/squid 30720 16 256
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
cache_replacement_policy heap LFUDA
range_offset_limit -1
quick_abort_min -1 KB

Перезапустите прокси Squid и посмотрите, что произойдет.

Ответ или решение

Чтобы решить проблему с кешированием больших файлов в Squid 3.3.8, установленном на CentOS 7, необходимо провести этапы диагностики и настройки конфигурации. Ваша ситуация, когда веб-серфинг работает, а большие файлы, такие как .ISO образы, не кешируются, требует внимательного анализа.

1. Анализ конфигурации

Для начала обратим внимание на ваш конфигурационный файл squid.conf:

cache_dir ufs /var/spool/squid 30720 16 256
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
maximum_object_size 6 GB
cache_replacement_policy heap LFUDA
range_offset_limit -1
quick_abort_min -1 KB

Вот ключевые моменты, которые вам нужно проверить:

  • Порядок настроек: Как вы уже отметили, параметр maximum_object_size должен располагаться выше cache_dir. То есть конфигурация должна выглядеть так:
maximum_object_size 6 GB
cache_dir ufs /var/spool/squid 30720 16 256
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
cache_replacement_policy heap LFUDA
range_offset_limit -1
quick_abort_min -1 KB

2. Перезапуск службы

После внесения изменений в конфигурацию необходимо перезапустить службу Squid для применения новых настроек:

sudo systemctl restart squid

3. Проверка логов

После рестарта проверьте логи доступа и ошибки, чтобы увидеть, были ли изменения успешными:

tail -f /var/log/squid/access.log
tail -f /var/log/squid/cache.log

Ищите записи о больших файлах. Дважды «TCP_MISS» указывает на то, что файл не был закеширован.

4. Изменение других параметров

В дополнение к порядку параметров, рекомендуется улучшить кеширование больших объектов с помощью настройки:

  • range_offset_limit: Убедитесь, что этот параметр установлен на нужное значение. Ваш текущий параметр -1 позволяет Сquid обрабатывать большие файлы без ограничения по диапазону.

  • quick_abort_min: Убедитесь, что этот параметр не мешает кешированию. Вы можете попробовать изменить его значение, если загрузка больших файлов по-прежнему не происходит.

5. Мониторинг загруженности сети и диска

Следующий этап — это мониторинг. Иногда проблемы с кешированием могут быть связаны с недостаточной пропускной способностью сети или загруженностью дисковой подсистемы:

  • Используйте утилиты мониторинга, такие как htop и iotop, чтобы проверить загрузку CPU и I/O.

6. Известные ограничения и настройки

Учтите, что некоторые серверы могут содержать заголовки, которые предотвращают кеширование. Проверьте HTTP-заголовки ответа с помощью инструментов, таких как curl:

curl -I http://ftp.osuosl.org/pub/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1503-01.iso

Обратите внимание на заголовки Cache-Control и Expires, которые могут указывать на то, почему файл не кешируется.

Заключение

Настройка кеширования больших файлов в Squid требует определенного подхода и внимательного анализа конфигурации. Следуя предложенным шагам, вы сможете устранить проблемы с кешированием в вашей среде homelab. Помните, что правильная последовательность параметров, проверка логов и мониторинг системы имеют ключевое значение для достижения успешных результатов.

Оцените материал
Добавить комментарий

Капча загружается...