Redis Cluster機器記憶體充爆處理

2022-08-14 07:51:11 字數 2164 閱讀 2556

系統:centos6.7

配置:4c8g

應用:redis cluster,例項化

1、無法啟動redis,啟動後系統oom,直接殺死

2、redis: oom command not allowed when used memory > 『maxmemory』

記憶體已滿,不允許資料在寫入

注: used_memory_human表示已用記憶體

used_memory_rss表示系統給redis分配的記憶體(即常駐記憶體)

mem_fragmentation_ratio=used_memory_rss/used_memory比例,一般情況下,used_memory_rss略高於used_memory,當記憶體碎片較多時,則mem_fragmentation_ratio會較大,可以反映記憶體碎片是否很多

1、首先檢視redis的記憶體使用,如上圖。可以看到已用記憶體5g多,常駐記憶體3.8g多。而我們的機器記憶體只有8g可用。明顯記憶體已經充爆。接下來想到的就應該是key的量太大了還是value的量太大了。

2、找出redis中的key。

###檢視key的個數(最好是把key拿出來分析)keys*echo"keys *"

|/usr/

local

/redis

/bin

/redis

-cli -p

6381

>

/tmp/

6381.log

3、分析發現key中有650000的common:order:logcachekey這樣的key,接下來我們需要確認下這些key的大小

###檢視key大小的命令debugobject

echo

'debug object "common:order:logcachekey90bef863-dfc7-4739-8404-9b6624a70196"'

|/usr/

local

/redis

/bin

/redis

-cli -p

6381

4、分析發現common:order:logcachekey所占用的記憶體為3g左右。因此找到元凶為這個key所導致的。

5、清理key

for

i in

`grep common:order:log 6381.log`;do

echo

"del $i"

|/usr/

local

/redis

/bin

/redis

-cli -p

6381

;done

6、key已經找到刪除,現在要查詢是哪個應用產生的。

因為開發人員沒在,那從運維角度,我是從網路流量來分析的,使用iftop

根據流量大小,找到對應的主機,聯絡到開發人員確認。

如果key少的話,可以直接取出每個key對應的value的大小,按照從大到小的順序排序

fori 

in`cat /tmp/6379.log`;do

echo -n

"$i "

;echo

"debug object $i"

|/usr/

local

/redis

/bin

/redis

-cli -p

6379

|awk -f

'[ |:]+''';

done

|sort -r

-n -k2

1、問題發生後,用最快最簡單的方式先把問題解決。減少影響的時間。比如公升級擴大記憶體。

2、此次遇到的問題是在測試環境,如果確認redis中資料可以清除,可以使用暴力的方式直接清空本地的例項化檔案,將記憶體釋放出來。但是生產環境切不可進行此操作。

CygWin安裝RedisCluster指南

安裝前確認磁碟有6g以上的磁碟容量,安裝時雙擊setup x86 64.exe,基本按照預設設定安裝就行,也可自己指定安裝路徑等,3 deps hiredis net.c中注釋掉 並在 include sds.h 之後追加 ifdef cygwin define tcp keepcnt 8 defi...

RedisCluster搭建步驟

安裝redis 配置並啟動redis節點 選兩台機器執行該步驟 把redis安裝目錄redis.conf修改如下並複製進對應的700 資料夾 bind 10.11.147.40 redis安裝機器ip 注意這裡千萬不要用127.0.0.1或者注釋掉這行,以上兩種都會導致遠端機器連線不到redis p...

redisCluster環境準備

需要 redis3.0以上的版本 我使用了redis3.2.12 之後需要ruby環境 yum install ruby yum install rubygems 安裝redis trib.rb執行依賴的ruby的包redis 3.2.2.gem 位址為 gem install redis 3.2....