Re: Отъедает память и начинает тормозить. Помогите найти причину.
Maxim Dounin
mdounin на mdounin.ru
Сб Апр 25 15:58:47 UTC 2020
Hello!
On Fri, Apr 24, 2020 at 04:15:13AM -0400, Dmytro Lavryk wrote:
> Доброго всем здоровья, в сложившейся обстановке.
>
> Есть nginx c "замороченным конфигом". Используется для проксирования раздачи
> видео по секьюрити ссылкам. Уонфиг такой достался, лично мне не везде
> понятен. потому... Суть ситуации - потребление памяти процессами nginx все
> время растет.. при достижении какого-то пикового значения (~1,2Гб на процесс
> /их 16-ть получается/) сильно падает скорость отдачи. при этом свободная
> память в ситеме все еще есть. Хотелось бы понять 2 момента:
> 1. Почему происходит потеря продуктивности?
> 2. Почему потребление памяти все время растет, а не ограничивается на
> каком-то уровне?
В конфиге три кэша, у каждого из них - гигабайт на ключи в
разделяемой памяти. Из общих соображений можно предположить, что
> vod_metadata_cache metadata_cache 4096m 30m;
> vod_response_cache response_cache 256m 30m;
в конфиге означает ещё до 4 с лишним гигабайт разделяемой памяти.
То есть банальный запуск nginx'а с такой конфигурацией потребует
более 7 гигабайт памяти.
И при этом, судя по всему, минимум 512 килобайт буферов будет
расходоваться на соединение ("vod_cache_buffer_size 512k;"), то
есть до 4 гигабайт на процесс (512k * 8192). А скорее всего и
больше, сколько требует тот же brotli - надо разбираться.
То есть цифры по памяти выглядят вполне адекватными конфигурации,
даже если предположить, что в используемых сторонних модулях
никаких проблем нет.
Что до потери скорости отдачи - то тут надо разбираться в причинах
по месту, смотреть, во что именно упираемся. Типичные причины:
упёрлись в диск, кончилась память (даже если она "в системе всё
ещё есть" - уменьшение количества свободной памяти в системе
означает ухудшение эффективности кэширования файлов операционной
системой, и соответственно рост нагрузки на диск), кончилась сеть,
кончился процессор.
Я бы рекомендовал начать с простого: разобраться, во что именно
упираемся. А дальше уже разбираться, почему.
Из совсем простого - выкиньте из конфига open_file_cache, толку от
него с вероятностью 99.99% нет вообще никакого, а проблем огрести
можно легко и непринуждённо, особенно при тех настройках что у
вас: с 512 тысячами открытых файлов на каждый процесс банально OS
может не справиться без специального тюнинга.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru