91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis中RDB和AOF持久化模式缺陷是什么

發布時間:2021-05-19 13:38:35 來源:億速云 閱讀:131 作者:小新 欄目:關系型數據庫

這篇文章主要介紹了Redis中RDB和AOF持久化模式缺陷是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一、RDB持久化模式缺陷

1、問題描述:

并發200路,模擬不斷寫Redis,持續4小時后,接口調用開始出現大量失敗,錯誤信息如下:

{"data":{"sendResult":null},"base":{"returncode":"99999","returndesc":"系統異常:MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error."},"qrybase":{"total":0,"count":0,"start":0}}

2、原因分析:

解讀錯誤信息,以為是磁盤不夠用引起,結果發現磁盤還剩余42%,如下所示:

Redis中RDB和AOF持久化模式缺陷是什么

于是根據錯誤信息提示開啟Redis日志,繼續壓測,接口依然報錯,但可從Redis日志信息中

Can’t save in background: fork: Cannot allocate memory

進程使用內存不當有關,查看Redis主進程占用內存如下:占用近55%*4G內存

Redis中RDB和AOF持久化模式缺陷是什么

具體原因:Redis在保存數據到硬盤時為了避免主進程假死,需要Fork一份主進程,然后在Fork進程內完成數據保存到硬盤的操作,如果主進程使用了2.2GB的內存,Fork子進程的時候需要額外的2.2GB,此時內存就不夠了,Fork失敗,進而數據保存硬盤也失敗了。

3、緩解方案(不能根本解決問題):

3.1 修改redis.conf文件中配置項stop-writes-on-bgsave-error no (默認值為yes),即當bgsave快照操作出錯時停止寫數據到磁盤,這樣后面寫錯做均會失敗,為了不影響后續寫操作,故需將該項值改為no

3.2 修改內核參數(如下3種方式),但需要root權限:

(1)	編輯/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效
(2)sysctl vm.overcommit_memory=1
(3)echo 1 > /proc/sys/vm/overcommit_memory

二、AOF持久化模式缺陷

1、問題1描述:

Redis主從節點均開啟AOF模式,并發200路,模擬不斷寫Redis,持續15分鐘后,接口調用開始出現大量失敗,且Redis所在的Linux虛擬服務器掛起。

接口報錯如下:

{"data":null,"base":{"returndesc":"系統異常","returncode":"999999"},"qrybase":null}
Biz(dubbo)接口報錯如下:
2015-06-05 11:28:28.760 [DubboServerHandler-X.X.X.X:20882-thread-173] ERROR  - error while validate jedis!
redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out

原因分析:

從dubbo接口報錯信息來看,是由于接口API操作Redis超時導致。從系統日志和IO監控來看,均說明上述問題是由于IO瓶頸(系統IO過于繁忙)所致,如下所示:

Redis中RDB和AOF持久化模式缺陷是什么

Redis中RDB和AOF持久化模式缺陷是什么

從系統日志也能看出,IO阻塞時間超過了120秒,由于系統安全機制導致機器掛起。

總結

測試結果證明AOF模式存在最明顯缺陷,即訪問壓力大時IO會成為性能瓶頸,進而導致服務不可用。

3、緩解方案(不能根本解決問題)

編輯/etc/sysctl.conf ,添加如下配置:

vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

然后sysctl -p 使配置文件生效。

問題2描述:

無論采用AOF模式還是RDB(快照模式),當兩文件(.aof或.rdb)大小超過系統內存80%,Redis進程會被系統Kill掉,導致服務不可用。

上述問題說明我們在使用Redis時需要事先做好系統內存的容量規劃,因為一旦Redis宕掉會導致大量數據丟失且是不可恢復的。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Redis中RDB和AOF持久化模式缺陷是什么”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大渡口区| 万源市| 岳池县| 上饶市| 株洲县| 丹巴县| 祁东县| 新蔡县| 牙克石市| 鄂托克旗| 阿图什市| 绵竹市| 紫金县| 缙云县| 故城县| 菏泽市| 卢龙县| 内黄县| 巴林左旗| 岗巴县| 山阴县| 高安市| 同心县| 东港市| 镇平县| 云阳县| 东方市| 尼勒克县| 鄂尔多斯市| 徐闻县| 梅州市| 宁乡县| 孝感市| 临猗县| 红原县| 柳州市| 万安县| 文水县| 昭苏县| 松滋市| 延边|