Redis 做隊列時 使用AOF策略 導(dǎo)致阻塞

1.先看日志信息

Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
Starting automatic rewriting of AOF on 107914% growth
Background append only file rewriting started by pid 4143
AOF rewrite child asks to stop sending diffs.
Parent agreed to stop sending diffs. Finalizing AOF...
Concatenating 0.00 MB of AOF diff received from parent.
SYNC append only file rewrite performed
AOF rewrite: 2 MB of memory used by copy-on-write
Background AOF rewrite terminated with success
Residual parent diff successfully flushed to the rewritten AOF (0.00 MB)
Background AOF rewrite finished successfully
Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.

2.看一下自己Redis相關(guān)的配置

appendonly yes # 開啟aof

appendfsync everysec # 設(shè)置aof策略,每秒寫入一次

aof-use-rdb-preamble yes #開啟aof rdb混合使用

aof-load-truncated yes # redis啟動加載aof文件時倦春,忽略掉錯誤的命令户敬,盡可能多的加載可用命令

aof-rewrite-incremental-fsync yes # 分批刷入aof文件,可以有效利用順序IO

no-appendfsync-on-rewrite no # 保證數(shù)據(jù)盡可能少的丟失,設(shè)置為no睁本,最多丟失2s數(shù)據(jù)尿庐,設(shè)置為yes,最多會丟失30s數(shù)據(jù)

auto-aof-rewrite-min-size 67108864 # aof文件大小 64M

auto-aof-rewrite-percentage 100 #(aof_current_size-aof_base_size)/aof_base_size與100%比較

3.查看監(jiān)控并分析問題原因

結(jié)合監(jiān)控分析可以看到圖一aof_delayed_fsync參數(shù)一致在持續(xù)增加呢堰,代表著aof在持續(xù)發(fā)生阻塞的情況

圖二可以看到已經(jīng)滿足上述的aof進(jìn)行rewrite的條件抄瑟,aof在頻繁的進(jìn)行rewrite操作

圖一
![截屏2022-09-23 上午12.01.08.png](https://upload-images.jianshu.io/upload_images/18881668-0f755951f6ccf059.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

圖二
截屏2022-09-23 上午12.01.08.png

原因:
1.客戶端是用redis來做隊列,又怕數(shù)據(jù)丟失枉疼,選擇了aof做持久化皮假,隊列中的key還都很大鞋拟,基本上都是30k左右的值,雖然監(jiān)控上看內(nèi)存的值是沒有很大惹资。
2.大量的大命令都堆積到了aof文件中贺纲,aof文件很快就達(dá)到了rewrite的觸發(fā)條件,導(dǎo)致redis在不斷的進(jìn)行rewrite褪测。
3.因為設(shè)置了no-appendfsync-on-rewrite no猴誊,所以在rewrite期間,是不允許追加fsync的侮措,再加上頻繁的rewrite操作懈叹,導(dǎo)致了aof的阻塞。
no-appendfsync-on-rewrite no / appendfsync everysec
每秒落盤一次分扎,實際上不是1s澄成,看下邊的邏輯圖,主線程在對比時間判斷的是2s笆包,此時最多丟失2s數(shù)據(jù)

no-appendfsync-on-rewrite yes / appendfsync everysec = appendfsync no
那么緩存中的數(shù)據(jù)只能等到linux的sync執(zhí)行的時候才會落盤,默認(rèn)間隔30s略荡,此時最多丟失30s數(shù)據(jù)

4.解決方案

對于redis來說庵佣,最好還是用來做緩存,用來做隊列汛兜,還要使用aof來持久化是不建議的巴粪,建議將redis做隊列的功能,更改為用kafka/rabbitmq/rocketmq等專業(yè)的隊列中間件來實現(xiàn)粥谬,若想繼續(xù)使用redis做的話肛根,請關(guān)閉aof持久化,并減小參數(shù)值漏策,避免redis的阻塞派哲,至于數(shù)據(jù)丟失問題,可以外加數(shù)據(jù)補(bǔ)償機(jī)制掺喻,如果redis宕機(jī)等以外情況發(fā)生可以自行重推數(shù)據(jù).

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芭届,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子感耙,更是在濱河造成了極大的恐慌褂乍,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件即硼,死亡現(xiàn)場離奇詭異逃片,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)只酥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門褥实,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呀狼,“玉大人,你說我怎么就攤上這事性锭≡剩” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵草冈,是天一觀的道長她奥。 經(jīng)常有香客問我,道長怎棱,這世上最難降的妖魔是什么哩俭? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮拳恋,結(jié)果婚禮上凡资,老公的妹妹穿的比我還像新娘。我一直安慰自己谬运,他們只是感情好隙赁,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著梆暖,像睡著了一般伞访。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轰驳,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天厚掷,我揣著相機(jī)與錄音,去河邊找鬼级解。 笑死冒黑,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的勤哗。 我是一名探鬼主播抡爹,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼芒划!你這毒婦竟也來了豁延?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤腊状,失蹤者是張志新(化名)和其女友劉穎诱咏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缴挖,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡袋狞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苟鸯。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡同蜻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出早处,到底是詐尸還是另有隱情湾蔓,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布砌梆,位于F島的核電站默责,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏咸包。R本人自食惡果不足惜桃序,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烂瘫。 院中可真熱鬧媒熊,春花似錦、人聲如沸坟比。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葛账。三九已至柠衅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間注竿,已是汗流浹背茄茁。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工魂贬, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留巩割,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓付燥,卻偏偏與公主長得像宣谈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子键科,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Redis支持RDB和AOF兩種持久化機(jī)制闻丑,持久化功能有效地避免因進(jìn)程退出造成的數(shù)據(jù)丟失問題,當(dāng)下次重啟時利用之前...
    xuxw閱讀 2,081評論 0 0
  • 一勋颖、Redis高可用概述 在介紹Redis高可用之前嗦嗡,先說明一下在Redis的語境中高可用的含義。 我們知道饭玲,在w...
    胸毛飄逸閱讀 255評論 0 2
  • 前言 在上一篇文章中侥祭,介紹了Redis的內(nèi)存模型,從這篇文章開始,將依次介紹Redis高可用相關(guān)的知識——持久化矮冬、...
    不_一閱讀 124評論 0 1
  • 前言 在上一篇文章中谈宛,介紹了Redis內(nèi)存模型,從這篇文章開始胎署,將依次介紹Redis高可用相關(guān)的知識——持久化吆录、復(fù)...
    Java架構(gòu)閱讀 2,314評論 3 21
  • 一、Redis高可用概述 在介紹Redis高可用之前琼牧,先說明一下在Redis的語境中高可用的含義恢筝。 我們知道,在w...
    空語閱讀 1,597評論 0 2