Отказ от ответственности: я работал в компании, которая использовала Redis в несколько больших масштабах (вероятно, меньше потребителей, чем в вашем случае, но наши потребители были очень активными), однако я не был из команды инфраструктуры, но я участвовал в некоторых заданиях DevOps.
Не думаю, что вы найдете точное число, поэтому я постараюсь поделиться некоторыми советами и советами, которые помогут вам:
Обязательно прочитайте всю страницу Redis Admin . Там много полезной информации. Я выделю некоторые советы оттуда:
- Предполагая, что вы настроите хост Linux, отредактируете
/etc/sysctl.conf
и установите высокий net.core.somaxconn
( RabbitMQ предлагает 4096
). Обратитесь к документации конфигурации tcp-backlog
в redis.conf для объяснения этого. - Предполагая, что вы настроите хост Linux, отредактируйте
/etc/sysctl.conf
и установите vm.overcommit_memory = 1
. Ниже приведено подробное объяснение. - Предполагается, что вы настроите хост Linux, отредактируете
/etc/sysctl.conf
и установите fs.file-max
. Это очень важно для вашего варианта использования . Предел открытых дескрипторов файлов / дескрипторов файлов - это, по сути, максимальное количество дескрипторов файлов (каждый клиент представляет дескриптор файла), которое может обработать SO. Пожалуйста, проверьте документацию Redis на этом . Документация RabbitMQ также предоставляет некоторую полезную информацию о нем. - Если вы редактируете файл
/etc/sysctl.conf
, запустите sysctl -p
, чтобы перезагрузить его. - "Обязательно отключите Linux Ядро имеет прозрачные огромные страницы, это отрицательно повлияет как на использование памяти, так и на задержку. Это выполняется с помощью следующей команды:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
. " Также добавьте эту команду в /etc/rc.local
, чтобы сделать ее постоянной после перезагрузки.
По моему опыту, Redis не очень требователен к ресурсам, поэтому я считаю, что у вас не возникнет проблем с процессором. Память напрямую связана с тем, сколько данных вы собираетесь хранить в ней.
- Если вы настраиваете сервер с несколькими ядрами, рассмотрите возможность использования более одного сервера Redis. Redis является (в основном) однопоточным и не будет использовать все ресурсы вашего ЦП, если вы используете один экземпляр в многоядерной среде.
Сервер Redis также предупреждает о неправильном / рискованном конфигурации при запуске (извините за старый образ):
Пояснение по памяти Overcommit (vm.overcommit_memory
)
Установка overcommit_memory в 1 говорит Linux чтобы расслабиться и выполнить форк в более оптимистичном режиме c распределения, и это действительно то, что вы хотите для Redis [из Redis FAQ ]
Есть три возможные настройки для vm.overcommit_memory
.
- 0 (ноль): проверьте, достаточно ли памяти, и, если да, разрешите выделение. Если памяти недостаточно, отклоните запрос и верните в приложение ошибку.
- 1 (один): разрешить выделение памяти сверх физического ОЗУ плюс подкачка, как определено
vm.overcommit_ratio
. Параметр vm.overcommit_ratio
- это процент, добавляемый к объему оперативной памяти при принятии решения о том, сколько ядро может перегрузить. Например, vm.overcommit_ratio
из 50 и 1 ГБ ОЗУ будет означать, что ядро позволит выделить до 1,5 ГБ плюс подкачка памяти до того, как запрос не будет выполнен. - 2 (два): ядро эквивалентно "все ставки выключены", значение 2 указывает ядру всегда возвращать успех запросу приложения на память. Это абсолютно так же странно и страшно, как кажется.