2013-08-25 11 views
18

Ricevo "comando OOM non consentito" durante il tentativo di impostare un tasto, maxmemory è impostato su 500M con maxmemory-policy "volatile-lru", sto impostando TTL per ogni tasto inviato a redis.Come eseguire il debug dell'errore "Il comando OOM non è consentito quando la memoria utilizzata> 'maxmemory'" in Redis?

INFO comando restituisce: used_memory_human:809.22M

  1. Se maxmemory è impostato su 500M, come ho fatto raggiunto 809 m?
  2. INFO comando non mostra alcun Keyspace, come è possibile?
  3. KEYS * restituisce "(elenco vuoto o set)", ho provato a cambiare il numero db, ancora nessun tasto trovato.

Ecco informazioni output del comando:

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> 
+0

Questa risposta è stata molto utile per me: http://stackoverflow.com/a/22511091/1972282 –

risposta

8

Qualche possibilità di modificare il numero di database? Se si utilizza un numero molto elevato, l'utilizzo della memoria iniziale potrebbe essere elevato

+0

sì, il numero di database è stato impostato su un numero elevato, dopo il ritorno al valore predefinito del database, la memoria è stata rilasciata e l'errore scompare, sono di nuovo in pista, grazie mille! – Ranch

+0

Cosa intendi con "numero di database"? Redis è solo 1 database. Non puoi averne di più, a meno che tu non stia parlando di un'istanza diversa. – Chloe

+0

@chloe: controlla il comando 'SELECT' - https://redis.io/commands/SELECT –

0

memoria viene controllato nella configurazione. Pertanto, la tua istanza è limitata come dice. È possibile visualizzare il proprio redis.conf o il problema dello strumento CLI "config get maxmemory" per ottenere il limite.

Se si gestisce questa istanza di Redis, è necessario consultare e regolare il file di configurazione. Di solito cercato in /etc/redis.conf o /etc/redis/redis.conf.

Se si utilizza un provider Redis è necessario ottenere con loro per aumentare il limite.

+0

grazie, ma questo non ha risposto a nessuna delle mie domande. – Ranch

9

La politica di maxmemory volatile-lru di Redis può non riuscire a liberare memoria sufficiente se il limite maxmemory è già utilizzato dalle chiavi non volatili.

0

Nel nostro caso, maxmemory è stato impostato su un importo elevato, quindi qualcuno del team lo ha modificato a un importo inferiore dopo che i dati erano già stati memorizzati.

0

Per tale problema, prendere in considerazione l'aumento del valore maxmemory nel file redis.conf. Mi ha aiutato.

come maxmemory era 21000000 per me quindi l'ho cambiato in 31000000. Spero che sia d'aiuto.

Problemi correlati