Redis ограничивает количество клиентов до 65K? - PullRequest
2 голосов
/ 23 января 2012

Я использую Redis 2.4.6 Stable.Я увеличил количество файловых дескрипторов redis в файле ae.h до более чем 200K:

#define AE_SETSIZE (1024*200)

Но при запуске я достигаю предела 65534.

Я запускаю redis на ec2 на экземпляре RedHat: 2.6.32-220.2.1.el6.x86_64 и я запускаю redis с ulimit -n 200000

Я настроилтесты с несколькими узлами ec2, которые пытаются увеличить количество одновременных подключений до 150 КБ, но не превышают 65 КБ.

Есть идеи о том, чего мне не хватает?Может быть, ограничение ядра?ошибка в redis?

Это дамп INFO на сервере redis:

used_cpu_sys_children:0.00
used_cpu_user_children:0.00
**connected_clients:65534**
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:572810560
used_memory_human:546.27M
used_memory_rss:305123328
used_memory_peak:572810528
used_memory_peak_human:546.27M
mem_fragmentation_ratio:0.53 

1 Ответ

4 голосов
/ 23 января 2012

Запрещены ли вы из-за ограничений сетевого порта? В зависимости от того, как клиенты закрывают соединения, у вас могут просто не хватать портов, так как они застрянут в состоянии TIME_WAIT.

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

...