【问题标题】:Redis keys disappear at random timesRedis 键随机消失
【发布时间】:2018-06-23 11:50:46
【问题描述】:

我遇到了仅在生产中出现的 Redis 问题,我无法在本地重现它。

我有 11 台服务器向 Redis 发送数据,每台服务器都会增加哈希映射的成员(每个服务器都有自己的哈希映射)。

哈希映射随机消失,我再次看到所有计数从 0 开始。

注意:

  • 密钥未过期:任何密钥均未设置过期或 ttl;
  • 密钥未被驱逐maxmemory 未设置且maxmemory-policy 无论如何都是no-eviction
  • Redis 永远不会出现内存问题,因为它位于具有 15GB 可用 RAM 的服务器上,而且它永远不会崩溃;
  • INFO 报告了 13 个连接的客户端,这很有意义:11 个服务器 + 1 个我在本地拥有的监控应用程序 + 用于获取 INFO 命令输出的连接。

我不知道该去哪里找了。

这是INFO 命令的输出:

# Server
redis_version:3.2.6
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:5a93b34a97c2cde8
redis_mode:standalone
os:Linux 4.9.0-6-amd64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:6.3.0
process_id:1394
run_id:ff6063b446dab8248fe9db118d2993a9de4252c8
tcp_port:6379
uptime_in_seconds:186923
uptime_in_days:2
hz:10
lru_clock:2982223
executable:/usr/bin/redis-server
config_file:/etc/redis/redis.conf

# Clients
connected_clients:13
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:1067336
used_memory_human:1.02M
used_memory_rss:3784704
used_memory_rss_human:3.61M
used_memory_peak:1471928
used_memory_peak_human:1.40M
total_system_memory:27401003008
total_system_memory_human:25.52G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:3.55
mem_allocator:jemalloc-3.6.0

# Persistence
loading:0
rdb_changes_since_last_save:13854793
rdb_bgsave_in_progress:0
rdb_last_save_time:1529530575
rdb_last_bgsave_status:err
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats
total_connections_received:185
total_commands_processed:19637940
instantaneous_ops_per_sec:121
total_net_input_bytes:752885632
total_net_output_bytes:1197081334
instantaneous_input_kbps:4.61
instantaneous_output_kbps:9.27
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:1333722
keyspace_misses:120814
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:185
migrate_cached_sockets:0

# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:262.40
used_cpu_user:207.39
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=14,expires=0,avg_ttl=0

【问题讨论】:

    标签: redis


    【解决方案1】:

    Redis 服务器很可能正在重新启动,而您正在丢失数据,因为 redis 无法保存到磁盘。

    Rdb 上次保存状态为错误,因此从未创建数据。此外,aof 被禁用。如果 redis 重新启动,它将从清除所有数据开始。

    检查您的日志 - 很可能 redis 没有写入磁盘的权限。此外,我相信您会看到表明 redis 正在重新启动的条目。

    【讨论】:

    • 谢谢 Sripathi,我会检查并报告。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    相关资源
    最近更新 更多