2017-02-11 18 views
0

я бегала несколько тестов, чтобы понять MaxMemory-Зарезервировано & MaxMemory-политики, и мы столкнулись с «сервер закрыл соединение» ошибки несколько раз, когда Redis DB был почти полон. Вот детали:Redis Cache - «Сервер закрыл соединение» ошибка

1) создал Redis кэш со стандартным C1 (1 Гб) уровня и выбрал «AllKeys-LRU» и макс-памяти защищены, как 50 МБ

2) Побежал инструмент Benchmark Redis для добавления ключей в Redis DB, чтобы убедиться, что Redis DB почти заполнен.

3) Как только DB достиг около ~ 960-980 МБ, снова запущен инструмент Benchmark, чтобы добавить еще несколько ключей и получил следующую ошибку. В каких сценариях может возникнуть эта ошибка? enter image description here Примечание. Значение Connected_Clients было равно 0, когда мы запустили команду info непосредственно перед тем, как мы столкнулись с этой ошибкой.

4) В то же время была запущена информационная команда на Azure Portal Console и получена как «Ошибка». 5) Эта ошибка длилась примерно 2-3 минуты, и после этого нам удалось добавить ключи. И как только мы снова запустили команду info, мы получили следующий stat. Здесь мы видим, что разница между used_memory и used_memory_rss составляет около 76 МБ. Как вы думаете, из-за этого может произойти ошибка выше?

Информация

redis_version Сервер: 3.2.3

redis_mode: автономный

ОС: Windows

arch_bits: 64

multiplexing_api: winsock_IOCP

Гц: 10

Клиенты

connected_clients: 2

client_longest_output_list: 0

client_biggest_input_buf: 0

client_total_writes_outstanding: 0

client_total_sent_bytes_outstanding: 0

blocked_clients: 0

памяти

used_memory: 968991592

used_memory_human: 924.10M

used_memory_rss: 1049776128

used_memory_rss_human: 1001.14M

used_memory_peak: 1070912296

used_memory_peak_human: 1021.30M

used_memory_lua: 37888

maxmemory: 1100000000

maxmemory_human: 1,02

maxmemory_policy: AllKeys-LRU

mem_allocator: jemalloc-3.6.0 #

+0

Вы проверили этот [документ] (https://docs.microsoft.com/en-us/azure/redis-cache/cache-how-to-troubleshoot) о проблеме с давлением в памяти? –

ответ

0

Скорее всего вы сталкиваетесь с сценарием высоких неидентифицированных соединений. В Redis-benchmark сначала создаются все клиентские соединения (в вашем случае -c 400 соединений), а затем их аутентифицируются. Задержка в auth вызывает большое количество неаутентифицированных подключений из одного IP-адреса и кэша красных глаз, закрывает их для защиты DOS. Следовательно, ошибка «Сервер закрыл соединение» Вы можете попробовать redis-benchmark от here, который я изменил для аутентификации сразу после подключения и должен решить эту проблему.