У меня есть Linux-сервер, посвященный Redis. Redis - это предполагаемый занять почти всю оперативную память себе. Меня беспокоит, что Linux может наложить ограничение на потребление памяти Redis.
Вопрос в следующем: как точно определить, сколько оперативной памяти может занять один процесс, если ОС не препятствует этому?
Информация в Интернете противоречива. Есть overcommit_ratio, ulimit и многие другие вещи, которые могут повлиять на правильный ответ. И 99% всей информации сосредоточено на ограничении памяти процесса небольшим объемом с ограниченными ресурсами. В то время как я заинтересован в том, чтобы мой важный огромный процесс плавно использовал всю огромную оперативную память, которую я собираюсь предоставить.
При нормальных обстоятельствах ваш процесс redis должен получать столько памяти, сколько доступно в системе (+ своп, если есть).
Документы Redis (https://redis.io/topics/admin) предлагает установить overcommit на 1 (никогда не проверять), что может быть полезно, поскольку он может выделить большую часть адресного пространства виртуальной памяти, фактически не используя все это. Конечно, он может использовать слишком много памяти и быть убит oom-killer (операционная система) - см. https://stackoverflow.com/questions/20207697/redis-process-was-killed-by-os-is-there-a-bug