redis 運維實際經驗紀錄

2021-06-11 21:12:02 字數 1033 閱讀 6317

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經驗

redis 在當前的技術社群裡是非常熱門的。從來自 antirez 乙個小小的個人專案到成為記憶體資料儲存行業的標準,redis已經走過了很長的一段路。隨之而來的一系列最佳實踐,使得大多數人可以正確地使用 redis。下面我們將探索正確使用 redis 的10個經驗。okay,以挑戰這個命令開始這篇...

Linux 運維經驗

以下是自己在運維工作中的一點經驗和看法,希望對大家有所幫助 2.系統的的自動安裝,主要有kickstart和cobbler 3.統一的yum源和定製化的rpm包,並整合至yum源站,為後續的環境初始化做軟體上的準備 4.構建專屬於自己的內網dns 5.標準化的統一的命名方式 標準化基礎 便於使用pu...

Redis運維秘籍

先給大家講乙個基本知識點 資料庫分類大致分為兩類,關係型資料庫和非關係型資料庫。如果詳細區分的話,還可以繼續分下去。redis不僅僅是快取資料庫 面試的時候,很多人會問,redis和memcahce的區別?memcache是乙個純快取的鍵值資料庫,而redis是乙個非關係型的資料庫。兩者的差異較大,...