Как мониторить кэш прокси nginx?

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

Я хотел бы увидеть, какие объекты кэшируются моим обратным прокси nginx (с apache в качестве бэкенда). Пока я не нашел способа, только информацию о том, что это еще не реализовано.

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

Это возможно, и если да, то как? (несмотря на патч, упомянутый в приведенной выше ссылке)

Nginx сохраняет кэшированные файлы в папке Proxy_cache_path. Файлы имеют имена, основанные на md5-выходе прокси-URL.

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

Ави

  • Nginx сохраняет кэшированные файлы в папке proxy_cache_path.
  • Файлы называются по md5-выходу proxy_cache_key (а не по md5-выходу прокси-URL).

Вы можете легко проверить это самостоятельно: просто откройте один из файлов в вашей папке proxy_cache_path и выполните md5sum по ключу:

$ cat /var/cache/nginx/d/be/54a355887f2e4391a6e0cb9150ae3bed
[...]
KEY: https://test/style.css
HTTP/1.0 200 OK
Strict-Transport-Security: max-age=31536000; includeSubDomains
[...]
$ echo -n https://test/style.css | md5sum
54a355887f2e4391a6e0cb9150ae3bed  -

Возможно, это немного связано. Чтобы увидеть, сколько записей находится в зоне кэша, проверьте, сколько записей сохранено в кэш-пути (/tmp/nginx_cache в моем примере).

nginx@nginx-5d468f984d-trj8s:/tmp/nginx_cache$ find . -type f  | wc -l
18719

Это показывает 18719 записей, сохраненных в зоне (верхняя граница, так как некоторые могут быть устаревшими или старыми).

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

Nginx упрощает реализацию функциональности утилиты командной строки, такой как htcacheclean от apache, так как он сохраняет заголовки и тело вместе. Так, например,

rg -a 'KEY:' /var/cache/nginx |less

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

Как мониторить кэш прокси-сервера Nginx: Полное руководство

Мониторинг кэша Nginx в режиме обратного прокси позволяет оптимизировать настройки для достижения наилучшей производительности, особенно когда у вас есть бэкенд-система, работающая в продакшен-режиме, такая как Apache. В этом руководстве мы рассмотрим, как реализовать мониторинг кэша без необходимости в тестировании производительности и с минимальной нагрузкой на сервер.

1. Хранение кешируемых объектов

Nginx хранит закешированные файлы в директории, указанной в директиве proxy_cache_path. Файлы именуются на основании MD5-хешей, полученных от ключа кэширования. Это значит, что для доступа к закешированным объектам вам нужно будет использовать хеши, а не сами URL. Например, если вы хотите проверить, какие объекты были закешированы, вам стоит заглянуть в директорию, указанную для кэша.

2. Проверка содержимого кэша

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

# Измените путь на тот, который вы определили в конфигурации Nginx
$ cd /var/cache/nginx
$ ls -la

Для проверки ключа кэша вы можете использовать команду md5sum. Вот как вы можете это сделать:

$ cat /var/cache/nginx/d/be/54a355887f2e4391a6e0cb9150ae3bed
KEY: https://test/style.css

Затем запустите команду для получения MD5-хеша:

$ echo -n https://test/style.css | md5sum

Это позволит вам проверить соответствие между URL и закешированным объектом.

3. Подсчет количества закешированных объектов

Чтобы узнать, сколько объектов находится в кэше, существует простая команда, которая подсчитает все файлы в директории кэша. Например:

$ find /var/cache/nginx -type f | wc -l

Эта команда вернёт общее количество файлов, хранящихся в кэше. Это число может варьироваться, так как некоторые записи могут устареть или быть удалены.

4. Мониторинг через консольный инструмент

Для получения информации о закешированных объектах, вы можете использовать инструмент rg, который будет лезть по всем файлам в директории кэша и искать строки с ключами:

$ rg -a 'KEY:' /var/cache/nginx | less

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

5. Настройка кэширования

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

  • Определите, какие типы контента требуют кэширования.
  • Настройте заголовки кэширования.
  • Оптимизируйте время жизни кэша для статического и динамического контента.

Заключение

Мониторинг кэша Nginx может быть выполнен с помощью простых команд и анализа содержимого директории, где сохраняются закешированные объекты. Эти методы позволят вам не только понять, какие объекты закешированы, но и помогут отследить их количество. Хотя полноценный бенчмаркинг дает более точные результаты, это решение подойдет для ваших нужд без значительного воздействия на производительность серверов. Правильная настройка и мониторинг кэша сделают вашу систему более эффективной и целенаправленной.

Следите за обновлениями вашей конфигурации и корректируйте её при необходимости, чтобы поддерживать оптимальную работу вашего веб-сервиса!

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

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