2012-04-03 9 views
22

Podczas korzystania Redis, to daje mi błąd:Redis z Resque i poręcze: komenda ERR niedozwolone stosowane pamięć> 'Maxmemory'

ERR command not allowed when used memory > 'maxmemory' 

Komenda informacji ujawnia:

redis 127.0.0.1:6379> info 
redis_version:2.4.10 
redis_git_sha1:00000000 
redis_git_dirty:0 
arch_bits:64 
multiplexing_api:kqueue 
gcc_version:4.2.1 
process_id:1881 
uptime_in_seconds:116 
uptime_in_days:0 
lru_clock:1222663 
used_cpu_sys:0.04 
used_cpu_user:0.04 
used_cpu_sys_children:0.00 
used_cpu_user_children:0.00 
connected_clients:1 
connected_slaves:0 
client_longest_output_list:0 
client_biggest_input_buf:0 
blocked_clients:0 
used_memory:930912 
used_memory_human:909.09K 
used_memory_rss:1269760 
used_memory_peak:931408 
used_memory_peak_human:909.58K 
mem_fragmentation_ratio:1.36 
mem_allocator:libc 
loading:0 
aof_enabled:0 
changes_since_last_save:4 
bgsave_in_progress:0 
last_save_time:1333432389 
bgrewriteaof_in_progress:0 
total_connections_received:1 
total_commands_processed:2 
expired_keys:0 
evicted_keys:0 
keyspace_hits:0 
keyspace_misses:0 
pubsub_channels:0 
pubsub_patterns:0 
latest_fork_usec:0 
vm_enabled:0 
role:master 

Czy the used_memory high? Jestem kompletnym rediem noobem. Jeśli tak, w jaki sposób występuje ten problem i jak powinienem kontynuować? Ten sam błąd występuje w produkcji (Heroku), więc każda pomoc jest bardzo doceniana. Dziękuję Ci.

Odpowiedz

29

Ta wiadomość jest zwracana po osiągnięciu limitu maxmemory. Można sprawdzić, jaka jest obecna granica jest za pomocą następującego polecenia:

redis 127.0.0.1:6379> config get maxmemory 
1) "maxmemory" 
2) "128000000" 

Rezultatem jest w bajtach.

Uwaga: pusta instancja Redis używa około 710 KB pamięci (w systemie Linux), więc jeśli planujesz przechowywać tylko 1 MB użytecznych danych i wymuszać ten limit, musisz ustawić 1734K w parametrze maxmemory. W pliku konfiguracyjnym ustawienie maxmemory znajduje się w bajtach, chyba że używa się sufiksu K, M, G.

Redis przechowuje wszystko w pamięci (nigdy nie rozlewa danych na dysku), więc cała zawartość kolejki Resque musi pasować. Kilka MB wydaje się bardzo niskie dla silnika Resque.

Nie określono, którą opcję Heroku wybrałeś, ale moim zrozumieniem jest opcja "nano" Redis To Go (5).

+0

Dzięki człowiek, na pewno potrzebne, aby podnieść standard naszego To Go Poziom . – kmurph79

1

Świetna odpowiedź przez Didier, są to tylko działania zmierzające do zwiększenia go:

redis-cli 
127.0.0.1:6379> config get maxmemory 
1) "maxmemory" 
2) "67108864" # (67mb) this will be different in your case 

to jak to zmienić:

127.0.0.1:6379> config set maxmemory 100mb 
OK 
127.0.0.1:6379> config set maxmemory-policy allkeys-lru 
OK 
127.0.0.1:6379> config get maxmemory 
1) "maxmemory" 
2) "104857600" 
Powiązane problemy