我正在进行一些测试以了解MaxMemory-Reserved& MaxMemory-Policy我们在Redis DB快满时几次遇到“服务器关闭连接”错误。以下是详细信息:
1)使用标准C1(1 GB)层创建Redis缓存,并选择“allkeys-lru”和max-memory-reserved为50 MB
2)使用Redis基准测试工具在Redis数据库中添加密钥以确保Redis DB几乎已满。
3)一旦DB达到~960-980 MB左右,再次运行Benchmark工具添加更多密钥并出现跟随错误。在哪种情况下可能会发生此错误? 注意:在我们遇到此错误之前运行info命令时,Connected_Clients值为0。
4)同时在Azure Portal Console上运行info命令,输出为“Error”。 5)此错误持续大约2-3分钟,之后我们能够添加密钥。一旦我们再次运行info命令,我们得到了以下统计信息。在这里,我们看到used_memory和used_memory_rss之间的差异大约为76 MB。你认为上述错误可能是因为这个吗?
信息
服务器redis_version:3.2.3
redis_mode:独立
os: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:11亿
maxmemory_human:1.02G
maxmemory_policy:allkeys-LRU
mem_allocator:jemalloc-3.6.0#
答案 0 :(得分:1)
很可能您遇到了高度未经身份验证的连接。 Redis-benchmark首先创建所有客户端连接(在您的情况下为-c 400连接),然后对它们进行身份验证。 auth中的延迟会导致来自单个IP的大量未经身份验证的连接,Azure Redis缓存会关闭它们以进行DOS保护。因此,错误“服务器关闭了连接” 您可以尝试here中的redis-benchmark,我已经修改了一旦建立连接就进行身份验证,并且应该解决此问题。