先簡要介紹一下 redislive
RedisLive是由python編寫的並且開源的圖形化監控工具,非常輕量級,核心服務部分只包含一個web服務和一個基於redis自帶的info命令以及monitor命令的監控服務,介面上只有一個基於BootStrap的web介面,非常簡潔明瞭。除此之外,它還支援多例項監控,切換方便,而且配置起來也非常容易。監控資訊支援redis儲存和持久化儲存(sqlite)兩種方式。
話不多說。Getting Started for guide
在我們安裝redislive以及編譯安裝redis之後,遇到如下情況,面對這些情況進行逐一排查
-
編譯完成,移動到新的的redis目錄,啟動資料夾和配置資料夾分別位於
/bin
與/etc
-
當我們連線redis之後,為了避免無法提供對外訪問的方式,開啟redis.conf的protected-mode選項,並且關閉bind所監聽的列表,具體操作見此
-
在修改完redis.conf之後,我們發現啟動redis-server的報錯如下
逐一排查
- 第一條報錯是指需要設定單個使用者開啟的最大檔案數,根據建議設定為
10032
ulimit -n 10032
-
修改後的最大檔案數
-
第二條報錯埠占用,kill到對應的pid就行了
-
第三條報錯為
To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local
他的意思是讓我們把kernel核心在2.6.38核心增加了Transparent Huge Pages (THP)特性寫入/etc/rc.local。這樣可以降低redis
fork子程式的速度
當我們全部解決完redis-server
啟動的報錯之後
啟動本地redislive的監控指令碼
猜測是不是redis-server沒有啟動,開啟shell檢視啟動過程
檢視redis.conf配置檔案,官方給出的配置是當設定了bind監聽的ip列表,採取ip白名單機制,其他ip一律無法訪問
- 註釋掉之後正常啟動redis
在回到redislive啟動監控指令碼觀察,還是無法連線redis
-
分析存在以下兩個原因
redislive
獲取不到redis
的使用者程式的記憶體設定used_meomory
- 可能是python2.7本身的版本獲取 不到更高版本的redis軟體包,導致不支援連線
redis
-
面向原因1 ,啟動
redis-cli
使用info meomry
- 面向原因2,檢視pip下載入的軟體包版本
- 排除原因1,檢視線上redis伺服器版本為
3.2.6
,本地pip
安裝的redis
為3.0.7
- 嘗試
pip install redis==3.2.6
- 嘗試
Solution 建議排查完redis的記憶體調優設定之後,注意一下本地redislive所使用的pip版本,因為 redislive編寫的python指令碼官方是用python2.7.5寫的,請配置時一定要注意
祝各位朋友快樂的編碼!