標籤:通過 vol volatile lru演算法 tor 異常 sed 允許 use
現象
日誌裡出現異常:
OOM command not allowed when used memory > ‘maxmemory‘
原因
記憶體已滿,不允許再存資料了,可以通過redis-cli 查看redis的具體資訊
127.0.0.1:6379> info memory# Memoryused_memory:4120248used_memory_human:3.93Mused_memory_rss:11509760used_memory_peak:1977983104used_memory_peak_human:1.84Gused_memory_lua:36864mem_fragmentation_ratio:2.79mem_allocator:jemalloc-3.6.0
註:
- used_memory_human表示已用記憶體
- used_memory_rss表示系統給redis分配的記憶體(即常駐記憶體)
- mem_fragmentation_ratio=used_memory_rss/used_memory比例,一般情況下,used_memory_rss略高於used_memory,當記憶體片段較多時,則mem_fragmentation_ratio會較大,可以反映記憶體片段是否很多
解決
註:如修改了設定檔需重啟redis
1. 增加redis記憶體,修改redis.conf
maxmemory 2gb
2. 修改redis儲存策略
預設的redis設定是非常保守的,即記憶體超限後就不在儲存,可以把策略修改為LRU演算法(最近最少使用演算法)——新儲存的資訊會替換掉舊的資訊,從而不會是記憶體越線,修改redis.conf
maxmemory-policy volatile-lru
3. 少往reids存資料
是否有必要把這麼多資料存入redis?
Redis: OOM command not allowed when used memory > ‘maxmemory’