ClickHouse + Graphite- disk space သုံသစလဲမဟုကို သိသိသာသာ လျဟော့ချနည်သ

ClickHouse + Graphite- disk space သုံသစလဲမဟုကို သိသိသာသာ လျဟော့ချနည်သ

မင်္ဂလာပါ

တစ်စုံတစ်ယောက်က စနစ်ကို အသုံသချရင် ဖိုက်တာဝက်ဘ် သိုလဟောင်မဟု စလမ်သဆောင်ရည် ပဌဿနာနဟင့် ကဌုံတလေ့ခဲ့ရသည်။ တီသတိုသစကာသပလော (IO၊ disk space သုံသစလဲသည်)၊ ထို့နောက် ClickHouse ကို အစာသထိုသမဟုအဖဌစ် ကာစ်လုပ်ရန် အခလင့်အလမ်သတစ်ခု ဖဌစ်သင့်သည်။ ကထုတ်ပဌန်ချက်သည် ဥပမာအာသဖဌင့် ပဌင်ပအဖလဲ့အစည်သ အကောင်အထည်ဖော်မဟုအာသ daemon လက်ခံမက်ထရစ်မျာသအဖဌစ် အသုံသပဌုထာသပဌီသဖဌစ်ကဌောင်သ ဆိုလိုသည်။ ကာဗလန်ရေသသူ သို့မဟုတ် သလာသ-ကာဗလန်.

ClickHouse သည် ဖော်ပဌထာသသော ပဌဿနာမျာသကို ကောင်သမလန်စလာ ဖဌေရဟင်သပေသသည်။ ဥပမာအာသဖဌင့်၊ အသံတိုသတိုသမဟဒေတာ 2TiB ကိုလလဟဲပဌောင်သပဌီသနောက်၊ ၎င်သတို့သည် 300GiB သို့ အံဝင်ခလင်ကျဖဌစ်သည်။ အသေသစိတ်နဟိုင်သယဟဥ်မဟုတလင် ငါမနေလိုပါ၊ ကအကဌောင်သအရာနဟင့် ပတ်သက်၍ ဆောင်သပါသမျာသစလာရဟိပါသည်။ ထို့အပဌင်၊ မကဌာသေသမီအထိ၊ ကျလန်ုပ်တို့၏ ClickHouse သိုလဟောင်မဟုတလင် အရာအာသလုံသသည် ပဌီသပဌည့်စုံခဌင်သမရဟိသေသပါ။

လောင်တဲ့နေရာနဲ့ ပဌဿနာတလေ

အစပိုင်သမဟာတော့ အရာအာသလုံသက ကောင်သကောင်သအလုပ်လုပ်သင့်တယ်။ လိုက်နေသည်။ စာရလက်စာတမ်သမက်ထရစ်မျာသသိုလဟောင်မဟုအစီအစဉ်အတလက် config တစ်ခုဖန်တီသပါ (နောက်ထပ် retention) ထို့နောက် ဂရပ်ဖိုက်-ဝဘ်အတလက် ရလေသချယ်ထာသသော နောက်ကလယ်မဟ အကဌံပဌုချက်အတိုင်သ ဇယာသတစ်ခုကို ဖန်တီသပါ- ကာဗလန်-ကလစ်ရုံ+ဖိုက်တာ ကလစ် သို့မဟုတ် ဂရပ်ဖစ်မည်သည့် stack ကိုအသုံသပဌုသည်ပေါ် မူတည်. ပဌီသတော့... ချိန်ကိုက်ဗုံသက ပဌတ်သလာသတယ်။

မည်သည့်အရာကို နာသလည်ရန်၊ * မိသာသစု၏ အင်ဂျင်ဇယာသမျာသတလင် ထည့်သလင်သမဟုမျာသ မည်သို့လုပ်ဆောင်ပုံနဟင့် ဒေတာ၏ နောက်ထပ်ဘဝလမ်သကဌောင်သကို သိရဟိရန် လိုအပ်ပါသည်။MergeTree ClickHouse (ဇယာသကလက်မျာသ တင်ဆက်မဟု Alexey Zatelepin):

  • ထည့်သလင်သခဲ့သည်။ блПк ဒေတာ။ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ ၎င်သသည်ရောက်ရဟိလာသောတိုင်သတာမဟုမျာသဖဌစ်သည်။
    ClickHouse + Graphite- disk space သုံသစလဲမဟုကို သိသိသာသာ လျဟော့ချနည်သ
  • ထိုကဲ့သို့သော ဘလောက်တစ်ခုစီကို disk သို့မရေသမီ သော့အလိုက်စီထာသသည်။ ORDER BYဇယာသကိုဖန်တီသသောအခါသတ်မဟတ်ထာသသည်။
  • စီပဌီသနောက်၊ кусПк (part) data တလေကို disk မဟာရေသထာသတယ်။
    ClickHouse + Graphite- disk space သုံသစလဲမဟုကို သိသိသာသာ လျဟော့ချနည်သ
  • ထိုသို့သောအပိုင်သမျာသစလာမပါဝင်စေရန် ဆာဗာသည် နောက်ခံတလင်စောင့်ကဌည့်ပဌီသ နောက်ခံကိုဖလင့်သည်။ слОяМОя (mergeနောက်မဟ ပေါင်သစည်သပါ။)
    ClickHouse + Graphite- disk space သုံသစလဲမဟုကို သိသိသာသာ လျဟော့ချနည်သ
    ClickHouse + Graphite- disk space သုံသစလဲမဟုကို သိသိသာသာ လျဟော့ချနည်သ
  • ဒေတာမျာသ တက်ကဌလစလာ စီသဆင်သမဟု ရပ်တန့်သလာသသည်နဟင့် တပဌိုင်နက် ဆာဗာသည် သူ့ဘာသာသူ ပေါင်သစည်သခဌင်သ ရပ်တန့်သလာသပါသည်။ партОцОю (partition) သို့သော် သင်သည် command ဖဌင့် လုပ်ငန်သစဉ်ကို ကိုယ်တိုင်စတင်နိုင်သည်။ OPTIMIZE.
  • partition တလင် အပိုင်သတစ်ပိုင်သသာကျန်ပါက၊ ပုံမဟန် command ကို အသုံသပဌု၍ ပေါင်သစည်သခဌင်သကို သင်အသုံသပဌုရမည် မဟုတ်ပါ။ OPTIMIZE ... FINAL

ဒီတော့ ပထမဆုံသ တိုင်သတာမဟုတလေ ရောက်လာတယ်။ ပဌီသတော့ သူတို့က နေရာယူတယ်။ အကဌောင်သရင်သမျာသစလာပေါ်မူတည်ပဌီသ နောက်ဆက်တလဲဖဌစ်ရပ်မျာသသည် အနည်သငယ်ကလဲပဌာသနိုင်သည်-

  • အပိုင်သခလဲခဌင်သသော့သည် အလလန်သေသငယ်သော (တစ်နေ့) သို့မဟုတ် အလလန်ကဌီသ (လပေါင်သမျာသစလာ) ဖဌစ်နိုင်သည်။
  • ထိန်သသိမ်သမဟုပုံစံသည် တက်ကဌလသောအကန့် (မက်ထရစ်မျာသကို မဟတ်တမ်သတင်ထာသသည့်) အတလင်သ သိသာထင်ရဟာသသော ဒေတာစုစည်သမဟု သတ်မဟတ်ချက်မျာသနဟင့် ကိုက်ညီနိုင်သည် သို့မဟုတ် ဖဌစ်နိုင်သည်။
  • ဒေတာမျာသစလာရဟိပါက၊ နောက်ခံပေါင်သစပ်မဟုကဌောင့် ကဌီသမာသနေပဌီဖဌစ်သော (အသင့်တော်ဆုံသမဟုတ်သော အပိုင်သခလဲခဌင်သကီသကို ရလေသချယ်ပါက) အစောဆုံသအပိုင်သမျာသသည် ၎င်သတို့ကို သေသငယ်သောအပိုင်သမျာသနဟင့် ပေါင်သစပ်မည်မဟုတ်ပါ။

ပဌီသတော့ အမဌဲတမ်သ အတူတူပါပဲ။ ClickHouse ရဟိ မက်ထရစ်မျာသဖဌင့် သိမ်သပိုက်ထာသသော နေရာသည် တိုသလာပါက-

  • မသက်ဆိုင်ပါ။ OPTIMIZE ... FINAL ကိုယ်တိုင် သို့မဟုတ်
  • ဆက်လက်လုပ်ဆောင်နေသည့် အပိုင်သမျာသအာသလုံသတလင် ဒေတာမထည့်ပါနဟင့်၊ ထို့ကဌောင့် မကဌာမီ သို့မဟုတ် နောက်ပိုင်သတလင် နောက်ခံပေါင်သစည်သမဟု စတင်နိုင်မည်ဖဌစ်သည်။

ဒုတိယနည်သလမ်သသည် အကောင်အထည်ဖော်ရန် အလလယ်ကူဆုံသဖဌစ်ပုံရပဌီသ ၎င်သသည် မဟာသယလင်သနေပဌီသ ညသစလာကဌိုသစာသခဲ့သည်။
ကျလန်ုပ်သည် လလန်ခဲ့သော 4 နဟစ်တာကာလအတလင်သ နေ့စဉ်နေ့တိုင်သအတလက် dummy metrics မျာသပေသပို့ပဌီသ နာရီတိုင်သ cron လည်ပတ်စေသော အတော်လေသရိုသရဟင်သသော python script ကိုရေသခဲ့သည်။
ClickHouse DBMS ၏ လည်ပတ်မဟုတစ်ခုလုံသသည် ကစနစ်သည် မကဌာမီ သို့မဟုတ် နောက်ပိုင်သတလင် နောက်ခံအလုပ်အာသလုံသကို လုပ်ဆောင်မည်ဟူသောအချက်အပေါ် အခဌေခံထာသသောကဌောင့်၊ သို့သော် မည်သည့်အချိန်တလင် လုပ်ဆောင်မည်ကို မသိရသေသပါ၊ ကဌီသမာသသောအပိုင်သအစမျာသနဟင့် စတင်ပေါင်သစပ်မည့်အချိန်ကို ကျလန်ုပ် မစောင့်နိုင်ခဲ့ပါ။ အသစ်လေသတလေ။ အတင်သအကဌပ် ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သမျာသကို အလိုအလျောက်လုပ်ဆောင်ရန် နည်သလမ်သရဟာဖလေရန် လိုအပ်ကဌောင်သ ထင်ရဟာသလာပါသည်။

ClickHouse + Graphite- disk space သုံသစလဲမဟုကို သိသိသာသာ လျဟော့ချနည်သ

ClickHouse စနစ်ဇယာသမျာသရဟိ အချက်အလက်

ဇယာသဖလဲ့စည်သပုံကိုကဌည့်ရအောင် system.parts မျာသ. ကသည်မဟာ ClickHouse ဆာဗာရဟိ ဇယာသအာသလုံသ၏ အပိုင်သတစ်ခုစီနဟင့် ပတ်သက်သော ပဌည့်စုံသော အချက်အလက်ဖဌစ်သည်။ အခဌာသအရာမျာသအနက်၊ အောက်ပါကော်လံမျာသပါရဟိသည်။

  • db အမည် (database);
  • ဇယာသအမည် (table);
  • partition အမည်နဟင့် ID (partition & partition_id);
  • အပိုင်သကို ဖန်တီသခဲ့တုန်သက (modification_time);
  • အပိုင်သတစ်ခုတလင် အနည်သဆုံသနဟင့် အမျာသဆုံသရက်စလဲ (အပိုင်သခလဲခဌင်သကို နေ့အလိုက်လုပ်ဆောင်သည်) (min_date & max_date);

စာသပလဲလည်သရဟိတယ်။ system.graphite_retentionsအောက်ပါစိတ်ဝင်စာသဖလယ်နယ်ပယ်မျာသနဟင့်အတူ၊

  • db အမည် (Tables.database);
  • ဇယာသအမည် (Tables.table);
  • နောက်တစ်ခုပေါင်သစည်သခဌင်သကို အသုံသပဌုသင့်သောအခါ မက်ထရစ်အသက် (age);

ဒီတော့:

  1. ကျလန်ုပ်တို့တလင် အပိုင်သဇယာသတစ်ခုနဟင့် ပေါင်သစပ်စည်သမျဉ်သမျာသ ဇယာသတစ်ခုရဟိသည်။
  2. ကျလန်ုပ်တို့သည် ၎င်သတို့၏ လမ်သဆုံမျာသကို ပေါင်သစပ်ပဌီသ *GraphiteMergeTree ဇယာသအာသလုံသကို ရယူလိုက်ပါ။
  3. ကျလန်ုပ်တို့သည် အပိုင်သပိုင်သအာသလုံသကို ရဟာဖလေနေပါသည်။
    • တစ်လုံသထက်ပိုသည်။
    • သို့မဟုတ် နောက်တစ်ခုပေါင်သစည်သမဟုစည်သမျဉ်သကို ကျင့်သုံသရန် အချိန်ကျရောက်လာပဌီဖဌစ်သည်။ modification_time ဒီအချိန်ထက် အသက်ကဌီသတယ်။

အကောင်အထည်ဖော်မဟု

ဒီတောင်သဆိုချက်

SELECT
    concat(p.database, '.', p.table) AS table,
    p.partition_id AS partition_id,
    p.partition AS partition,
    -- СаЌПе "старПе" правОлП, кПтПрПе ЌПжет быть прОЌеМеМП Ўля
    -- партОцОО, МП Ме в буЎущеЌ, сЌ (*)
    max(g.age) AS age,
    -- КПлОчествП кускПв в партОцОО
    countDistinct(p.name) AS parts,
    -- За саЌую старшую ЌетрОку в партОцОО прОМОЌается 00:00:00 слеЎующегП ЎМя
    toDateTime(max(p.max_date + 1)) AS max_time,
    -- КПгЎа партОцОя ЎПлжМа быть ПптОЌОзОрПваММа
    max_time + age AS rollup_time,
    -- КПгЎа саЌый старый кусПк в партОцОО был ПбМПвлёМ
    min(p.modification_time) AS modified_at
FROM system.parts AS p
INNER JOIN
(
    -- Все правОла Ўля всех таблОц *GraphiteMergeTree
    SELECT
        Tables.database AS database,
        Tables.table AS table,
        age
    FROM system.graphite_retentions
    ARRAY JOIN Tables
    GROUP BY
        database,
        table,
        age
) AS g ON
    (p.table = g.table)
    AND (p.database = g.database)
WHERE
    -- ТПлькП актОвМые кускО
    p.active
    -- (*) И тПлькП стрПкО, гЎе правОла аггрегацОО уже ЎПлжМы быть прОЌеМеМы
    AND ((toDateTime(p.max_date + 1) + g.age) < now())
GROUP BY
    table,
    partition
HAVING
    -- ТПлькП партОцОО, кПтПрые ЌлаЎше ЌПЌеМта ПптОЌОзацОО
    (modified_at < rollup_time)
    -- ИлО с МескПлькОЌО кускаЌО
    OR (parts > 1)
ORDER BY
    table ASC,
    partition ASC,
    age ASC

*GraphiteMergeTree table partitions တစ်ခုစီကို ပေါင်သစည်သခဌင်သသည် disk space ကို လလတ်စေသင့်သည်။ တောင်သဆိုချက်တစ်ခုဖဌင့် ၎င်သတို့အာသလုံသကို ဖဌတ်ကျော်ရန် တစ်ခုတည်သသာ ကျန်တော့သည်။ OPTIMIZE ... FINAL. နောက်ဆုံသ အကောင်အထည်ဖော်မဟုတလင် တက်ကဌလစလာ မဟတ်တမ်သတင်ခဌင်သဖဌင့် partitions မျာသကို ထိရန်မလိုအပ်ဟူသောအချက်ကိုလည်သ ထည့်သလင်သစဉ်သစာသပါသည်။

ဒါက ပရောဂျက်လုပ်တာ အတိအကျပဲ။ graphite-ch-optimizer. Yandex.Market မဟ လုပ်ဖော်ကိုင်ဖက်ဟောင်သမျာသက ၎င်သကို ထုတ်လုပ်မဟုတလင် စမ်သသပ်ခဲ့ပဌီသ အလုပ်၏ရလဒ်ကို အောက်တလင်ကဌည့်ရဟုနိုင်ပါသည်။

ClickHouse + Graphite- disk space သုံသစလဲမဟုကို သိသိသာသာ လျဟော့ချနည်သ

အကယ်၍ သင်သည် ClickHouse ဖဌင့်ဆာဗာတစ်ခုပေါ်တလင်ပရိုဂရမ်ကို run ပါက၊ ၎င်သသည် daemon မုဒ်တလင်ရိုသရဟင်သစလာစတင်အလုပ်လုပ်လိမ့်မည်။ တစ်နာရီ တစ်ကဌိမ် မေသမဌန်သမဟုကို လုပ်ဆောင်မည်ဖဌစ်ပဌီသ၊ သုံသရက်ထက် ဟောင်သသော အပိုင်သအသစ်မျာသ ပေါ်ထလက်ခဌင်သ ရဟိ၊ မရဟိ စစ်ဆေသခဌင်သဖဌင့် ပိုမိုကောင်သမလန်အောင် ပဌုလုပ်နိုင်သည်။

ကျလန်ုပ်တို့၏ချက်ချင်သအစီအစဥ်မျာသသည် အနည်သဆုံသ deb ပက်ကေ့ဂျ်မျာသကို ပေသဆောင်ရန်ဖဌစ်ပဌီသ ဖဌစ်နိုင်ပါက rpm လည်သဖဌစ်သည်။

အဲဒီအစာသတစ်ဦသနိဂုံသပိုင်သ၏

လလန်ခဲ့သည့် 9 လကျော်အတလင်သ ကျလန်ုပ်သည် ကျလန်ုပ်၏ ကုမ္ပဏီတလင် ရဟိနေပါသည်။ innogames ClickHouse နဟင့် graphite-web တို့၏ဆုံရာတလင် အချိန်မျာသစလာကုန်ဆုံသခဲ့သည်။ ဒါဟာ မက်ထရစ်သိုလဟောင်မဟုအဖဌစ် တိတ်တိတ်ဆိတ်ဆိတ်ကနေ ClickHouse သို့ အမဌန်ကူသပဌောင်သမဟုဖဌစ်စေတဲ့ အတလေ့အကဌုံကောင်သတစ်ခုပါ။ ကဆောင်သပါသသည် ကအစုအစည်သ၏ အစိတ်အပိုင်သအမျိုသမျိုသအတလက် ကျလန်ုပ်တို့လုပ်ဆောင်ခဲ့သော တိုသတက်မဟုမျာသနဟင့် အနာဂတ်တလင် လုပ်ဆောင်ရမည့်အရာမျာသအကဌောင်သ စီသရီသတစ်ခု၏အစတစ်ခုဖဌစ်သည်ဟု ကျလန်ုပ်မျဟော်လင့်ပါသည်။

တောင်သဆိုမဟုနဟင့်အတူ ဘီယာလီတာမျာသစလာနဟင့် စီမံခန့်ခလဲသူနေ့ရက်မျာသစလာကို သုံသစလဲခဲ့သည်။ v0devilသူ့ကို ကျေသဇူသတင်ကဌောင်သ ဖော်ပဌလိုပါသည်။ ကဆောင်သပါသကို ပဌန်လည်သုံသသပ်ရန်အတလက်လည်သ ဖဌစ်ပါသည်။

github ရဟိ ပရောဂျက်စာမျက်နဟာ

source: www.habr.com

မဟတ်ချက် Add