redis 改版的專案上線有兩個月了,記錄一下redis 相關的經驗,也給大家乙個參照:
我們的redis server是一主一從,使用r710的機器,8核心,24g記憶體; 每天約插入200萬左右的資料,現在庫里有3000萬條紀錄,占用了9g的記憶體;由於現在每天記憶體增長太快,擔心很快會無法負載,因此寫了指令碼每天將過期資料刪除;
現在執行中的問題:
1.redis執行基本穩定,從沒有自己中斷過服務,php指令碼去set的話大概1秒鐘能設定1萬條小資料,並沒有官方給出的資料高;但是修改配置後大重啟服務時大概需要1到2分鐘才能完全將硬碟中的資料載入到記憶體中去,在載入完之前,redis不能提供服務;
2.redis的預設配置中,每60秒如果紀錄更改數達到1萬條就需要dump到硬碟中去,但實際上由於超過了這個數,我們的redis幾乎不停地在dump資料到硬碟上;dump資料到硬碟時,我估計為了達到乙個原子的效應,避免資料丟失,redis是先把資料dump到乙個臨時檔案,然後重新命名為你在配置檔案設定的資料檔名.而前面說到,載入資料要1到2分鐘,dump資料應該也在1分鐘左右吧;dump出來的檔案差不多1到2個g;這樣,伺服器幾乎一直保持著每分鐘寫乙個2g的檔案的這種io的負載;磁碟基本不閒著;
3.還是在dump中,除開磁碟不閒著以外,cpu也一路飆公升:redis是fork乙個子程序來dump資料到硬碟,原有程序占用30%+的cpu,而dump資料的子程序單獨享用用了乙個cpu核心,cpu占用100%;
4. redis在dump資料的時候,是fork子程序,這樣產生乙個問題:redis本向占用了9g的記憶體,在dump資料時又fork乙個程序,子程序繼承了記憶體分配,也占用了9g的記憶體….redis一下子占用了18g的記憶體了;
發現這些問題後,我修改了redis的配置檔案,設定為30分鐘內只要有一次寫修改就dump資料,這樣系統負載大幅減輕了.
處於設想中的想法:
主redis並不dump資料,不管寫多少次都不dump到硬碟,或是這個dump的時間非常長;從redis則主要承擔合理地dump資料到硬碟以起備份作用;主redis啟動時先從從redis中scp或是ftp download資料回來;有待後續驗證;
文章出處:
redis dump資料匯入匯出
遷移redis資料一般有三種方式 這裡示例redis dump匯出資料,再通過redis load匯入 由於安裝redis dump需要依賴ruby,且版本大於2.2.2,所以這裡需要先公升級ruby 1.新增aliyun映象並檢測ruby版本 gem sources a gem sources r...
Redis Dump 將Redis資料匯入匯出
redis dump是乙個將redis資料匯入 匯出為json格式資料的小工具,目前還在alpha版本,目前提供兩個命令,將redis資料層出成json的redis dump命令,以及將json檔案匯入到redis中的redis load命令匯出 redis dump u127.0 0.1 6371...
redis dump安裝與匯出redis資料
一 安裝redis dump redis dump安裝的時候一般都會遇到下面的錯誤 error error installing redis dump redis requires ruby version 2.2.2.12 所以這裡我直接按照解決方案來安裝redis dump.1 安裝rvm gp...