2013-08-25 3 views
18

鍵を設定しようとしているときに「OOMコマンドが許可されていません」というメッセージが表示されます。 maxmemorymaxmemory-policyで「500M」に設定されています。Redisでエラーをデバッグする方法 "メモリ使用時にOOMコマンドが許可されていません> 'maxmemory'"?

INFOコマンドリターンは:used_memory_human:809.22M maxmemoryが500Mに設定されている場合

  1. は、どのように私は809Mに達したのですか?
  2. INFOコマンドでKeyspacesが表示されない場合はどうすればできますか?
  3. KEYS *は "(空のリストまたはセット)"を返します。データベース番号を変更しようとしましたが、まだキーが見つかりませんでした。ここで

infoコマンド出力です:

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

この回答はとても役に立ちました:http://stackoverflow.com/a/22511091/1972282 –

答えて

8

データベースの数を変更しましたか?非常に大きい数を使用すると、初期メモリ使用量が高くなる可能性があります。

+0

はい、データベースの数が高い数値に設定され、デフォルトのデータベース値に戻った後、メモリが解放され、エラーが表示されなくなりました。 – Ranch

+0

「データベースの数」はどういう意味ですか? Redisはわずか1データベースです。あなたは別のインスタンスについて話している場合を除き、それ以上は持つことはできません。 – Chloe

+0

@chloe: 'SELECT'コマンドをチェックしてください - https://redis.io/commands/SELECT –

0

メモリを設定して制御されます。したがって、インスタンスは制限されています。 redis.confを見たり、CLIツールの "config get maxmemory"の問題を見て制限を取得することができます。

このRedisインスタンスを管理する場合は、設定ファイルを調べて調整する必要があります。通常、/etc/redis.confまたは/etc/redis/redis.confで検索します。

Redisプロバイダを使用している場合は、制限を引き上げることについてRedisのプロバイダを入手する必要があります。

+0

ありがとう、これは私の質問には答えませんでした。 – Ranch

9

最大メモリ制限がすでに不揮発性キーによって使用されている場合、Redis 'maxmemory volatile-lruポリシーは十分なメモリを解放できません。

0

私たちの場合、maxmemoryは高い値に設定されていましたが、チームの誰かが、データがすでに保存された後、それをより低い金額に変更しました。

0

このような問題が発生した場合、redis.confファイルのmaxmemoryを増やすことを検討してください。 それは私を助けました。

maxmemoryのように私は21000000だったので、私は31000000に変更しました。

関連する問題