Оптимизация nginx - Очистка кеша


Рубрика: Администрирование -> Полезности
Метки: | |
Просмотров: 47

В процессе работ по шареду нашел проблему в nginx (не чистится клиентский кэш)

Ниже приведет алгоритм моих действий и результат.

Удаляем кеш клиентов nginx за последние 7 дней

find /var/cache/nginx/client_temp/ -type f -atime +7 -print -delete

Уменьшаем размер кеша под nginx

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=microcache:5m max_size=1000m;

Уменьшить желательно до max_size=50m;

Иначе, исходя из ситуации, которую я наблюдал в процессе очистки завирусованных файлов пользовательского кэша, автоочистка работать корректно не будет.

50m вполне достаточно для нормальной работы кэширования. Слишком большой размер кэша приводит к накоплению большого количества файлов кэша и повышенный iowait от постоянного перебора этих файлов в nginx.

Кроме этого в настройках кэширования не было параметра inactive, это и привело к основной проблеме, поскольку файлы не чистились и тот 1 ГБ, который был выделен, сейчас забит пустыми файлами, которые занимают айноды и приводят к тому, что nginx ищет активный кэш очень долго.

После очистки и настройки параметра inactive кэш начнет работать эффективнее.

Применил правило удаления неактивного кэша, к которому не было запросов больше 7 дней. Секция кэширования теперь выглядит так:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=microcache:5m inactive=7d max_size=1000m;

После проверки через неделю заметил, что nginx самостоятельно не удаляет все файлы неактивного кэша. Сегодня проверил, как минимум вижу, что к некоторым файлам не было запросов больше 10 дней.

Во первых командой

du -scBM /var/cache/nginx/client_temp/
было замечено что директория кэша превышает максимальный разрешенный объем

Во вторых в директории есть файлы, доступ к которым запрашивался больше 7 дней назад

Проверяем командой

find /var/cache/nginx/client_temp/ -type f -atime +7 -print | wc -l

И проблема в нагрузке на сервер не только в самом nginx, а например, в тех же clamav, locate и т.д., которые периодически перебирают/сканируют эти файлы и тем самым из-за большого их количесва отрабатывают "тяжело и медленно".

Чтобы это все не накапливалось, поставил задание в крон, чтобы ежедневно удалялись неактивные файлы кэша, к которым не было запросов больше 7 дней

33 3 * * * find /var/cache/nginx/client_temp/ -type f -atime +7 -delete > /dev/null 2>&1

После очистки по крону, проблема решилась и больше кеш не скапливается лишний.

Автор: BuxarNET (Тяшкевич Виталий) для IntFAQ.ru, по инструкции от хостинг провайдера Buxar-Host.ru


  • Комментариев: 0

  • Вконтакте

  • Facebook:

    Оставьте комментарий!

    grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

    Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

    Имя и сайт используются только при регистрации

    Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

    Авторизация 

    (обязательно)