rocksdb系列之write stall

為什么需要write stall

我們知道称鳞, 當(dāng)flush/compaction趕不上write rate的速度時(shí)涮较,rockdb會(huì)降低write rate,甚至直接停寫(xiě)冈止, 如果沒(méi)有這個(gè)策略狂票,會(huì)有什么問(wèn)題?其實(shí)主要是兩個(gè)

  • 增加空間放大熙暴,耗盡磁盤(pán)空間
  • 增加讀放大闺属, 極大的降低讀性能

但是慌盯, 有時(shí)候,database容易對(duì)突然暴增的寫(xiě)太過(guò)敏感掂器,或者容易低估hardware的處理能力亚皂, 這個(gè)時(shí)候就會(huì)反饋給用戶的就是意想不到的slowness 甚至query timeout

一般情況下, 通過(guò)這幾個(gè)地方你可以知道你數(shù)據(jù)庫(kù)是不是在進(jìn)行write stall

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

write stall 觸發(fā)的條件

  • Too many memtable

    延緩寫(xiě): 如果max_write_buffer_number 大于3灭必, 將要flush的memtables大于等于max_write_buffer_number - 1, write 延緩

    停寫(xiě): 如果將要flush 的memtable的個(gè)數(shù)大于等于max_write_buffer_number, write 直接停止等f(wàn)lush完成

在以上情況下乃摹, 一般會(huì)有這樣的日志:

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

    延緩寫(xiě): 如果L0的文件數(shù)量達(dá)到了level0_slowdown_writes_trigger禁漓,write 延緩寫(xiě)

    停寫(xiě): 如果文件數(shù)量達(dá)到了level0_stop_writes_trigger, 直接停寫(xiě)直到L0->L1的compactiom減少了L0的文件數(shù)孵睬。

    以上兩種情況時(shí)播歼, 會(huì)出現(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

    延緩寫(xiě): 如果要compation的的字節(jié)數(shù)達(dá)到soft_pending_compaction_bytes,延緩寫(xiě)

    停寫(xiě): 如果該字節(jié)數(shù)目大于hard_pending_compaction_bytes掰读, 直接停寫(xiě)

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

write stall vs write stop

當(dāng)發(fā)生延緩寫(xiě)的時(shí)候秘狞,rocksdb 會(huì)把寫(xiě)速率降低到delayed_write_rate, 如果待compaction的字節(jié)數(shù)量持續(xù)增加蹈集, rocksdb的寫(xiě)速率會(huì)降低到低于delayed_write_rate烁试。 note: slowdow/停寫(xiě)/待compaction的字節(jié)都是針對(duì)單個(gè)cf的, 而write stall 是針對(duì)整個(gè)DB的雾狈,也就是說(shuō):如果某個(gè)cf 觸發(fā)了write stall, 整個(gè)DB都會(huì)stall (延緩)

如何減少stall

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

  • 增加max_background_flushes 使更多的thread用來(lái)flush
  • 增加max_write_buffer_number 是待flush的memtable更小

如果stall 是因?yàn)長(zhǎng)0的文件太多/或者太多的compaction bytes字節(jié)數(shù),compaction的速率趕不上write善榛, 注意任何減少寫(xiě)放大的行為都可以減少compaction時(shí)需要的字節(jié)數(shù),因此為了加速compaction呻畸, 可以設(shè)置這幾個(gè)參數(shù):

  • 增加max_background_compactiom 使得有更多的compaction thread
  • 增加write_buffer_size, 可以減少寫(xiě)方法
  • 增加min_write_buffer_number_to_merge
    當(dāng)然移盆, 可以增加stop/slowdow的觸發(fā)條件、compaction bytes limit伤为, 這些都可以防止write stall
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咒循,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子绞愚,更是在濱河造成了極大的恐慌叙甸,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件位衩,死亡現(xiàn)場(chǎng)離奇詭異裆蒸,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)糖驴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)僚祷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)佛致,“玉大人,你說(shuō)我怎么就攤上這事辙谜“秤埽” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵装哆,是天一觀的道長(zhǎng)罐脊。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蜕琴,這世上最難降的妖魔是什么萍桌? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮奸绷,結(jié)果婚禮上梗夸,老公的妹妹穿的比我還像新娘。我一直安慰自己号醉,他們只是感情好反症,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著畔派,像睡著了一般铅碍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上线椰,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天胞谈,我揣著相機(jī)與錄音,去河邊找鬼憨愉。 笑死烦绳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的配紫。 我是一名探鬼主播径密,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼躺孝!你這毒婦竟也來(lái)了享扔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤植袍,失蹤者是張志新(化名)和其女友劉穎惧眠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體于个,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氛魁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呆盖。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拖云,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出应又,到底是詐尸還是另有隱情宙项,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響掠河,放射性物質(zhì)發(fā)生泄漏咏连。R本人自食惡果不足惜换淆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦油昂、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至匆浙,卻和暖如春安寺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背首尼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工挑庶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人软能。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓迎捺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親查排。 傳聞我的和親對(duì)象是個(gè)殘疾皇子破加,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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