rocksdb 的write stall

為什么需要write stall

我們知道该互, 當flush/compaction趕不上write rate的速度時,rockdb會降低write rate听哭,甚至直接停寫慢洋, 如果沒有這個策略塘雳,會有什么問題陆盘?其實主要是兩個

  • 增加空間放大,耗盡磁盤空間
  • 增加讀放大败明, 極大的降低讀性能

但是隘马, 有時候,database容易對突然暴增的寫太過敏感妻顶,或者容易低估hardware的處理能力酸员, 這個時候就會反饋給用戶的就是意想不到的slowness 甚至query timeout

一般情況下蜒车, 通過這幾個地方你可以知道你數(shù)據(jù)庫是不是在進行write stall

  • LOG file, info log
  • Compaction stats found in Log file

write stall 觸發(fā)的條件

  • Too many memtable

延緩寫: 如果max_write_buffer_number 大于3幔嗦, 將要flush的memtables大于等于max_write_buffer_number - 1酿愧, write 延緩
停寫: 如果將要flush 的memtable的個數(shù)大于等于max_write_buffer_number, write 直接停止等flush完成

在以上情況下, 一般會有這樣的日志:

 Stopping writes because we have 5 immutable memtables (waiting for flush), max_write_buffer_number is set to 5
 Stalling writes because we have 4 immutable memtables (waiting for flush), max_write_buffer_number is set to 5
  • Too many level-0 SST file
    延緩寫: 如果L0的文件數(shù)量達到了level0_slowdown_writes_trigger邀泉,write 延緩寫
    停寫: 如果文件數(shù)量達到了level0_stop_writes_trigger嬉挡, 直接停寫直到L0->L1的compactiom減少了L0的文件數(shù)。

    在以上情況下汇恤, 會出現(xiàn)這樣的日志

    Stalling writes because we have 4 level-0 files
    Stopping writes because we have 20 level-0 files  
    
  • Too many pending compaction bytes
    延緩寫: 如果要compation的的字節(jié)數(shù)達到soft_pending_compaction_bytes庞钢,延緩寫
    停寫: 如果該字節(jié)數(shù)目大于hard_pending_compaction_bytes, 直接停寫

    以上兩種情況時因谎, 會出現(xiàn)這樣的日志

      Stalling writes because of estimated pending compaction bytes 500000000
     Stopping writes because of estimated pending compaction bytes 1000000000
    

write stall vs write stop

當發(fā)生延緩寫的時候基括,rocksdb 會把寫速率降低到delayed_write_rate, 如果待compaction的字節(jié)數(shù)量持續(xù)增加财岔, rocksdb的寫速率會降低到低于delayed_write_rate风皿。 note: slowdow/停寫/待compaction的字節(jié)限制都是針對單個cf的, 而write stall 是針對整個DB的使鹅,也就是說:如果某個cf 觸發(fā)了write stall, 整個DB都會stall (延緩)

如何減少stall

如果stall是由pending flush引起的揪阶,可以設置這兩個參數(shù)

  • 增加max_background_flushes 使更多的thread用來flush
  • 增加max_write_buffer_number 使待flush的memtable更小

如果stall 是因為L0的文件太多/或者太多的compaction bytes字節(jié)數(shù),compaction的速率趕不上write患朱, 注意任何減少寫放大的行為都可以減少compaction時需要的字節(jié)數(shù)鲁僚,因此為了加速compaction, 可以設置這幾個參數(shù):

  • 增加max_background_compactiom 使得有更多的compaction thread
  • 增加write_buffer_size, 可以減少寫方法
  • 增加min_write_buffer_number_to_merge
    當然裁厅, 可以增加stop/slowdow的觸發(fā)條件冰沙、compaction bytes limit, 這些都可以防止write stall
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末执虹,一起剝皮案震驚了整個濱河市拓挥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袋励,老刑警劉巖侥啤,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異茬故,居然都是意外死亡盖灸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門磺芭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赁炎,“玉大人,你說我怎么就攤上這事钾腺♂愕妫” “怎么了讥裤?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長姻报。 經(jīng)常有香客問我己英,道長,這世上最難降的妖魔是什么吴旋? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任剧辐,我火速辦了婚禮,結果婚禮上邮府,老公的妹妹穿的比我還像新娘荧关。我一直安慰自己,他們只是感情好褂傀,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布忍啤。 她就那樣靜靜地躺著,像睡著了一般仙辟。 火紅的嫁衣襯著肌膚如雪同波。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天叠国,我揣著相機與錄音未檩,去河邊找鬼。 笑死粟焊,一個胖子當著我的面吹牛冤狡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播项棠,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悲雳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了香追?” 一聲冷哼從身側(cè)響起合瓢,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎透典,沒想到半個月后晴楔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡峭咒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年税弃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讹语。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡钙皮,死狀恐怖蜂科,靈堂內(nèi)的尸體忽然破棺而出顽决,到底是詐尸還是另有隱情短条,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布才菠,位于F島的核電站茸时,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赋访。R本人自食惡果不足惜可都,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚓耽。 院中可真熱鬧渠牲,春花似錦、人聲如沸步悠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鼎兽。三九已至答姥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谚咬,已是汗流浹背鹦付。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留择卦,地道東北人敲长。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓禾乘,卻偏偏與公主長得像弯囊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子病曾,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

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

  • 為什么需要write stall 我們知道秕噪, 當flush/compaction趕不上write rate的速度時...
    luomoxyz閱讀 5,666評論 0 1
  • RocksDB 使用 LSM 的方式用來提升寫入的性能钳降,但如果寫入過快,超過了 RocksDB 處理的極限腌巾,Roc...
    siddontang閱讀 4,105評論 3 6
  • 最近這段時間在使用influxdb遂填,抽空翻譯了一下配置文件。有不足的地方請指正澈蝙。因為簡書默認markdown編輯器...
    wangrui927閱讀 4,283評論 0 4
  • RocksDB有一個廣泛使用的功能就是當flush或compact速度小于外部數(shù)據(jù)寫入速度的時候可以阻寫吓坚。如果沒有...
    中山浪子閱讀 1,546評論 0 4
  • 在先前我們討論了 RocksDB 的 statistics 和 write stall,但這些只能讓我們發(fā)現(xiàn)問題灯荧,...
    siddontang閱讀 8,095評論 2 16