использовать максклиенты 4096
на redis.conf
недействительными настроить OpenFilesLimit (недействительными) {
rlim_t maxfiles = server.maxclients+CONFIG_MIN_RESERVED_FDS;
предел структуры rlimit;
если (getrlimit(RLIMIT_NOFILE,&limit) == -1) {
serverLog(LL_WARNING,"Невозможно получить текущий предел NOFILE (%s), предполагая 1024 и соответствующим образом настроив максимальную конфигурацию клиентов.",
ошибка(ошибка));
server.maxclients = 1024-CONFIG_MIN_RESERVED_FDS;
} еще {
rlim_t oldlimit = limit.rlim_cur;
/* Установить максимальное количество файлов, если текущего лимита недостаточно
* для наших нужд. */
если (старый лимит < maxfiles) {
rlim_t лучший предел;
интервал setrlimit_error = 0;
/* Попробуйте установить ограничение на количество файлов, чтобы оно соответствовало 'maxfiles' или, по крайней мере,
* к более высокому значению поддерживается меньше, чем maxfiles. */
лучший лимит = максимальное количество файлов;
в то время как (лучший предел > старый предел) {
rlim_t decr_step = 16;
limit.rlim_cur = лучший предел;
limit.rlim_max = лучший лимит;
если (setrlimit(RLIMIT_NOFILE,&limit) != -1) перерыв;
setrlimit_error = ошибка нет;
/* Нам не удалось установить ограничение файла на «bestlimit». Попробуйте с
* меньший предел уменьшается на несколько FD за итерацию. */
если (bestlimit < decr_step) перерыв;
лучший предел -= decr_step;
}
/* Предположим, что предел, который мы получили изначально, все еще действителен, если
* наша последняя попытка была еще ниже. */
если (bestlimit < oldlimit) bestlimit = oldlimit;
если (bestlimit < maxfiles) {
беззнаковое целое число old_maxclients = server.maxclients;
server.maxclients = лучший лимит-CONFIG_MIN_RESERVED_FDS;
/* maxclients не имеет знака, поэтому может переполниться: чтобы
* чтобы проверить, что maxclients теперь логически меньше 1
* мы тестируем косвенно через bestlimit. */
если (лучший предел <= CONFIG_MIN_RESERVED_FDS) {
serverLog(LL_WARNING,"Ваш текущий 'ulimit -n' "
"%llu недостаточно для запуска сервера."
"Пожалуйста, увеличьте лимит открытых файлов как минимум до "
"%llu. Выход.",
(беззнаковый длинный длинный) старый лимит,
(unsigned long long) maxfiles);
выход(1);
}
serverLog(LL_WARNING,"Вы запросили максимальное количество клиентов %d "
"требуется не менее %llu макс. файловых дескрипторов.",
старые_maxclients,
(unsigned long long) maxfiles);
serverLog(LL_WARNING,"Сервер не может установить максимальное количество открытых файлов"
"в %llu из-за ошибки ОС: %s.",
(unsigned long long) maxfiles, strerror(setrlimit_error));
serverLog(LL_WARNING,"Текущее максимальное количество открытых файлов: %llu."
"maxclients был уменьшен до %d, чтобы компенсировать "
"низкий лимит."
"Если вам нужно больше maxclients, увеличьте ulimit -n".",
(unsigned long long) bestlimit, server.maxclients);
} еще {
serverLog(LL_NOTICE,"Увеличено максимальное количество открытых файлов"
"в %llu (изначально было установлено %llu)",
(беззнаковые длинные длинные) maxfiles,
(unsigned long long) oldlimit);
}
}
}
}