Подтвердить что ты не робот

Как отладить ошибку "Команда OOM не разрешена при использовании памяти> maxmemory" в Redis?

Я пытаюсь установить команду OOM при попытке установить ключ, maxmemory установлен на 500M с maxmemory-policy "volatile-lru", я устанавливаю TTL для каждой клавиши, отправленной на redis.

Команда

INFO возвращает: used_memory_human:809.22M

  • Если maxmemory установлен на 500M, как я достиг 809M?
  • INFO команда не отображает никаких ключей, как это возможно?
  • KEYS * возвращает "(пустой список или набор)", я пытался изменить номер db, все еще не найдено ключей.

Здесь выводится информационная команда:

redis-cli -p 6380
redis 127.0.0.1:6380> info
# Server
redis_version:2.6.4
redis_git_sha1:00000000
redis_git_dirty:0
redis_mode:standalone
os:Linux 2.6.32-358.14.1.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:28291
run_id:229a2ee688bdbf677eaed24620102e7060725350
tcp_port:6380
uptime_in_seconds:1492488
uptime_in_days:17
lru_clock:1429357

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

# Memory
used_memory:848529904
used_memory_human:809.22M
used_memory_rss:863551488
used_memory_peak:848529192
used_memory_peak_human:809.22M
used_memory_lua:31744
mem_fragmentation_ratio:1.02
mem_allocator:jemalloc-3.0.0

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1375949883
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
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

# Stats
total_connections_received:3
total_commands_processed:8
instantaneous_ops_per_sec:0
rejected_connections:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0

# Replication
role:master
connected_slaves:0

# CPU
used_cpu_sys:18577.25
used_cpu_user:1376055.38
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Keyspace
redis 127.0.0.1:6380>
4b9b3361

Ответ 1

Вы случайно изменили количество баз данных? Если вы используете очень большое число, то первоначальное использование памяти может быть высоким

Ответ 2

Политика Redis maxmemory volatile-lru может не освободить достаточную память, если предел maxmemory уже используется энергонезависимыми ключами.

Ответ 3

Память управляется в конфиге. Таким образом, ваш экземпляр ограничен, поскольку он говорит. Вы можете либо посмотреть в свой redis.conf, либо с помощью функции CLI Tool "config get maxmemory", чтобы получить лимит.

Если вы управляете этим экземпляром Redis, вам нужно будет проконсультироваться и настроить файл конфигурации. Обычно искали в /etc/redis.conf или/etc/redis/redis.conf.

Если вы используете поставщика Redis, вам нужно будет с ними связаться с увеличением вашего лимита.

Ответ 4

В нашем случае maxmemory был установлен на большую сумму, а затем кто-то из команды изменил его на более низкую сумму после того, как данные уже были сохранены.

Ответ 5

Для такой проблемы рассмотрите возможность увеличения вашей maxmemory в файле redis.conf. Это помогло мне.

как maxmemory для меня было 21000000, тогда я изменил его на 31000000. Надеюсь, это поможет.