HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Za mu kalli yadda Zabbix ke aiki tare da bayanan TimescaleDB azaman bayanan baya. Za mu nuna muku yadda ake farawa daga karce da yadda ake yin ƙaura daga PostgreSQL. Za mu kuma samar da kwatancen gwaje-gwajen aiki na jeri biyu.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

HighLoad++ Siberiya 2019. Tomsk Hall. Yuni 24, 16:00. Wadannan da gabatarwa. Za a gudanar da taron HighLoad++ na gaba a ranar 6 da 7 ga Afrilu, 2020 a St. Petersburg. Cikakkun bayanai da tikiti mahada.

Andrey Gushchin (nan gaba - AG): – Ni injiniyan tallafi ne na fasaha na ZABBIX (wanda ake kira da “Zabbix”), mai koyarwa. Ina aiki a cikin goyon bayan fasaha fiye da shekaru 6 kuma na sami kwarewa ta kai tsaye tare da aiki. A yau zan yi magana game da wasan kwaikwayon da TimescaleDB zai iya bayarwa idan aka kwatanta da PostgreSQL 10 na yau da kullun. Har ila yau, wasu ɓangaren gabatarwa game da yadda yake aiki a gaba ɗaya.

Babban kalubalen aiki: daga tattara bayanai zuwa tsaftace bayanai

Da farko, akwai wasu ƙalubalen aiki waɗanda kowane tsarin sa ido ke fuskanta. Kalubalen samarwa na farko shine tattarawa da sarrafa bayanai cikin sauri.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Kyakkyawan tsarin sa ido ya kamata da sauri, a kan lokaci ya karɓi duk bayanan, sarrafa shi bisa ga maganganu masu jawo, wato, sarrafa shi bisa ga wasu sharuɗɗa (wannan ya bambanta a tsarin daban-daban) kuma a adana shi a cikin ma'ajin bayanai don amfani da wannan bayanan a cikin nan gaba.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Kalubalen aiki na biyu shine ajiyar tarihi. Ajiye a cikin ma'ajin bayanai akai-akai kuma sami damar shiga cikin sauri da dacewa zuwa waɗannan ma'auni waɗanda aka tattara na tsawon lokaci. Abu mafi mahimmanci shi ne cewa wannan bayanan ya dace don samuwa, yi amfani da shi a cikin rahotanni, jadawalai, masu tayar da hankali, a wasu ƙididdiga masu mahimmanci, don faɗakarwa, da dai sauransu.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Kalubale na aiki na uku shine share tarihi, wato lokacin da ka kai ga ba ka buƙatar adana duk wani ma'auni dalla-dalla waɗanda aka tattara sama da shekaru 5 (har ma da watanni ko watanni biyu). An share wasu nodes na cibiyar sadarwa, ko wasu runduna, ba a buƙatar awoyin saboda sun riga sun tsufa kuma ba a tattara su. Duk wannan yana buƙatar tsaftacewa don kada bayananku yayi girma da yawa. Gabaɗaya, share tarihin shine mafi sau da yawa gwaji mai tsanani don ajiya - sau da yawa yana da tasiri mai ƙarfi akan aiki.

Yadda za a magance matsalolin caching?

Yanzu zan yi magana musamman game da Zabbix. A cikin Zabbix, ana warware kiran farko da na biyu ta amfani da caching.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Tarin bayanai da sarrafa su - Muna amfani da RAM don adana duk waɗannan bayanan. Yanzu za a tattauna waɗannan bayanai dalla-dalla.

Har ila yau, a gefen ma'ajin bayanai akwai wasu caching don manyan zaɓuka - don hotuna da sauran abubuwa.

Caching a gefen sabar Zabbix kanta: muna da ConfigurationCache, ValueCache, HistoryCache, TrendsCache. Menene shi?

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

ConfigurationCache shine babban ma'ajin da muke adana awo, runduna, abubuwan bayanai, masu jawowa; duk abin da kuke buƙata don aiwatar da preprocessing, tattara bayanai, daga wane runduna don tattarawa, tare da wace mita. Ana adana duk waɗannan a cikin ConfigurationCache don kar a je wurin bayanai kuma ƙirƙirar tambayoyin da ba dole ba. Bayan uwar garken ya fara, muna sabunta wannan cache (ƙirƙira shi) kuma mu sabunta shi lokaci-lokaci (dangane da saitunan sanyi).

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Caching in Zabbix. Tarin bayanai

Anan hoton yana da girma sosai:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Manyan wadanda ke cikin shirin sune wadannan masu tarawa:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Waɗannan su ne tsarin tafiyar da taro da kansu, “masu jefa ƙuri’a” dabam-dabam waɗanda ke da alhakin gudanar da taro iri-iri. Suna tattara bayanai ta hanyar icmp, ipmi, da ka'idoji daban-daban kuma suna canza shi duka zuwa aiwatarwa.

PreProcessing HistoryCache

Har ila yau, idan mun ƙididdige abubuwan bayanai (waɗanda suka saba da Zabbix sun sani), wato, ƙididdiga, abubuwan tattara bayanai, muna ɗaukar su kai tsaye daga ValueCache. Zan gaya muku yadda ake cike daga baya. Duk waɗannan masu tarawa suna amfani da ConfigurationCache don karɓar ayyukansu sannan su wuce su zuwa aiwatarwa.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Preprocessing kuma yana amfani da ConfigurationCache don samun matakan aiwatarwa da aiwatar da wannan bayanan ta hanyoyi daban-daban. An fara daga sigar 4.2, mun matsar da shi zuwa wakili. Wannan ya dace sosai, saboda preprocessing kanta aiki ne mai wahala. Kuma idan kuna da Zabbix mai girma sosai, tare da adadi mai yawa na abubuwan bayanai da yawan tarin tarin yawa, to wannan yana sauƙaƙe aikin sosai.

Saboda haka, bayan mun sarrafa wannan bayanan ta wata hanya ta amfani da preprocessing, muna adana su a cikin HistoryCache domin mu ƙara sarrafa su. Wannan yana ƙare tarin bayanai. Mun ci gaba zuwa babban tsari.

Tarihin daidaitawa aiki

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Babban tsari a Zabbix (tunda tsarin gine-ginen monolithic ne) shine Syncer na Tarihi. Wannan shi ne babban tsari wanda ya shafi sarrafa atomic na kowane nau'in bayanai, wato kowace ƙima:

  • darajar ta zo (yana ɗauka daga HistoryCache);
  • cak a cikin daidaitawar Kanfigareshan: ko akwai wasu abubuwan da ke haifar da ƙididdiga - ƙididdige su;
    idan akwai - yana haifar da abubuwan da suka faru, haifar da haɓaka don ƙirƙirar faɗakarwa, idan ya cancanta bisa ga tsari;
  • rikodin abubuwan da ke haifar da aiki na gaba, tarawa; idan kun tara sama da sa'a ta ƙarshe da sauransu, ana tunawa da wannan ƙimar ta ValueCache don kada ku je teburin tarihi; Don haka, ValueCache yana cike da mahimman bayanai waɗanda suke da mahimmanci don ƙididdige abubuwan da ke haifar da ƙididdiga, abubuwan ƙididdigewa, da sauransu;
  • sannan Tarihi syncer ya rubuta dukkan bayanai zuwa ma’adanar bayanai;
  • Database ya rubuta su zuwa faifai - wannan shine inda aikin sarrafawa ya ƙare.

Database. Caching

A gefen bayanan, lokacin da kake son duba hotuna ko wasu rahotanni kan abubuwan da suka faru, akwai cache iri-iri. Amma a cikin wannan rahoto ba zan yi magana a kansu ba.

Don MySQL akwai Innodb_buffer_pool, da tarin cache daban-daban waɗanda kuma ana iya daidaita su.
Amma wadannan su ne manyan:

  • raba_buffers;
  • girman_cache_size;
  • shared_pool.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Ga dukkan ma'ajin bayanai, na ce akwai wasu cache da ke ba ka damar adana bayanan da ake yawan buƙata a cikin RAM. Suna da nasu fasahar don wannan.

Game da Ayyukan Database

Saboda haka, akwai yanayi mai gasa, wato, uwar garken Zabbix tana tattara bayanai kuma ta rubuta ta. Lokacin da aka sake kunna shi, yana kuma karantawa daga tarihi don cika ValueCache da sauransu. Anan za ku iya samun rubutun da rahotanni masu amfani da Zabbix API, wanda aka gina akan hanyar yanar gizo. Zabbix API yana shigar da bayanai kuma yana karɓar mahimman bayanai don samun hotuna, rahotanni, ko wasu nau'ikan jerin abubuwan da suka faru, matsalolin kwanan nan.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Hakanan sanannen maganin gani shine Grafana, wanda masu amfani da mu ke amfani da shi. Mai ikon shiga kai tsaye duka ta hanyar Zabbix API da kuma bayanan bayanai. Har ila yau, yana haifar da wata gasa don samun bayanai: mafi kyawu, mafi kyawun daidaita ma'ajin bayanai ana buƙatar bin saurin isar da sakamako da gwaji.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Share tarihi. Zabbix yana da mai kula da gida

Kira na uku da ake amfani da shi a cikin Zabbix shine share tarihi ta amfani da Mai Kula da Gida. Ma'aikacin gida yana bin duk saitunan, wato, abubuwan bayananmu suna nuna tsawon lokacin adanawa (a cikin kwanaki), tsawon lokacin da za a adana abubuwan da ke faruwa, da yanayin canje-canje.

Ban yi magana game da TrendCache ba, wanda muke ƙididdigewa akan tashi: bayanai sun zo, muna tara shi har tsawon sa'a ɗaya (mafi yawa waɗannan lambobi ne na sa'a ta ƙarshe), adadin shine matsakaici / mafi ƙarancin kuma muna rikodin shi sau ɗaya a cikin awa daya a cikin tebur na yanayin canje-canje ("Trends") . "Mai tsaron gida" yana farawa kuma yana share bayanai daga ma'ajin bayanai ta amfani da zaɓi na yau da kullun, wanda ba koyaushe yake tasiri ba.

Yadda za a gane cewa ba shi da tasiri? Kuna iya ganin hoto mai zuwa akan jadawali na ayyuka na ciki:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Mai daidaita tarihin ku yana aiki koyaushe (jafin hoto). Kuma jadawali "ja" wanda ke saman. Wannan “Mai tsaron gida” ne wanda zai fara yana jiran ma’ajiyar bayanai ta goge duk layuka da ta ayyana.

Bari mu ɗauki ID ɗin Abu: kuna buƙatar share dubu 5 na ƙarshe; ba shakka, ta fihirisa. Amma yawanci ma'aunin bayanan yana da girma sosai - har yanzu ma'aunin yana karantawa daga faifai kuma yana sanya shi a cikin ma'ajin, kuma wannan aiki ne mai tsada sosai ga ma'ajiyar bayanai. Dangane da girmansa, wannan na iya haifar da wasu matsalolin aiki.

Kuna iya musaki mai kula da gida a hanya mai sauƙi - muna da sanannen hanyar yanar gizo. Saituna a cikin Gudanarwa gabaɗaya (saituna don "Mai tsaron gida") muna hana kula da gida don tarihin ciki da abubuwan da ke faruwa. Saboda haka, Mai aikin gida baya sarrafa wannan:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Me za ku iya yi a gaba? Kun kashe shi, jadawalinku sun daidaita... Waɗanne matsaloli za su iya tasowa a wannan yanayin? Menene zai iya taimakawa?

Rarraba (bangare)

Yawanci ana saita wannan ta wata hanya dabam akan kowace rumbun adana bayanai na dangantaka da na lissafa. MySQL yana da fasahar kansa. Amma gabaɗaya suna kama da juna idan aka zo ga PostgreSQL 10 da MySQL. Tabbas, akwai bambance-bambancen ciki da yawa a cikin yadda ake aiwatar da shi duka da kuma yadda duka ke shafar aiki. Amma gabaɗaya, ƙirƙirar sabon bangare yakan haifar da wasu matsaloli.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Dangane da saitin ku (nawa ne bayanan da kuka ƙirƙira a rana ɗaya), yawanci suna saita mafi ƙarancin - wannan shine 1 rana / tsari, kuma don "yanayin", yanayin canje-canje - wata 1 / sabon tsari. Wannan na iya canzawa idan kuna da saiti mai girma sosai.

Bari mu ce nan da nan game da girman saitin: har zuwa 5 sababbin dabi'u a sakan daya (wanda ake kira nvps) - wannan za a yi la'akari da ƙaramin "saitin". Matsakaicin - daga ƙimar 5 zuwa 25 dubu a sakan daya. Duk abin da ke sama ya rigaya ya kasance manya kuma manya-manyan kayan aiki waɗanda ke buƙatar tsayayyen tsarin bayanai.

A kan manyan shigarwa, kwana 1 bazai yi kyau ba. Ni da kaina na ga ɓangarori akan MySQL na gigabytes 40 kowace rana (kuma ana iya samun ƙari). Wannan babban adadin bayanai ne, wanda zai iya haifar da wasu matsaloli. Yana bukatar a rage shi.

Me yasa kuke buƙatar rabuwa?

Abin da Partitioning ke bayarwa, ina tsammanin kowa ya sani, shine rabon tebur. Yawancin lokaci waɗannan fayiloli ne daban akan faifai da buƙatun tazara. Yana zabar bangare ɗaya mafi kyawu idan ya kasance ɓangare na rarrabuwa na al'ada.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Don Zabbix, musamman, ana amfani da shi ta hanyar kewayon, ta kewayon, wato, muna amfani da tambarin lokaci (lambar yau da kullum, lokaci tun farkon zamanin). Kun saka farkon ranar/ƙarshen yini, kuma wannan shine rabon. Don haka, idan kuna neman bayanan da suka cika kwanaki biyu, ana dawo da komai da sauri daga ma'ajin bayanai, saboda kawai kuna buƙatar loda fayil ɗaya a cikin cache ɗin ku mayar da shi (maimakon babban tebur).

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Yawancin ma'ajin bayanai kuma suna saurin sakawa (sakawa cikin tebur na yara ɗaya). Ina magana a zahiri a yanzu, amma wannan kuma yana yiwuwa. Rarraba yakan taimaka.

Elasticsearch don NoSQL

Kwanan nan, a cikin 3.4, mun aiwatar da maganin NoSQL. Ƙara ikon rubutu a cikin Elasticsearch. Kuna iya rubuta wasu nau'ikan: zabar - ko dai rubuta lambobi ko wasu alamu; muna da rubutun kirtani, zaku iya rubuta rajistan ayyukan zuwa Elasticsearch... Dangane da haka, mu'amalar yanar gizo kuma za ta sami damar Elasticsearch. Wannan yana aiki sosai a wasu lokuta, amma a halin yanzu ana iya amfani dashi.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

TimecaleDB. Hypertables

Domin 4.4.2 mun kula da abu ɗaya kamar TimecaleDB. Menene shi? Wannan ƙari ne don PostgreSQL, wato, yana da ƙirar PostgreSQL ta asali. Bugu da ƙari, wannan tsawo yana ba ku damar yin aiki sosai da inganci tare da bayanan jerin lokuta kuma kuna da rarrabuwa ta atomatik. Ga yadda yake kama:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Wannan shi ne hypertable - akwai irin wannan ra'ayi a Timecale. Wannan babban tebur ne da kuka ƙirƙira, kuma yana ɗauke da gungu. Chunks bangare ne, waɗannan tebur na yara ne, idan ban yi kuskure ba. Yana da matukar tasiri.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

TimecaleDB da PostgreSQL

Kamar yadda masana'antun TimescaleDB suka tabbatar, suna amfani da mafi daidaitaccen algorithm don sarrafa tambayoyin, musamman abubuwan da ake sakawa, wanda ke ba su damar samun kusan aiki akai-akai tare da haɓaka girman saka bayanai. Wato, bayan layuka miliyan 200 na Postgres, wanda aka saba ya fara raguwa sosai kuma ya rasa aikin a zahiri zuwa sifili, yayin da Timescale yana ba ku damar shigar da abubuwan da suka dace da inganci tare da kowane adadin bayanai.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Yadda ake shigar TimecaleDB? Yana da sauki!

Yana cikin takaddun, an bayyana shi - zaku iya shigar dashi daga fakiti don kowane ... Ya dogara da fakitin Postgres na hukuma. Ana iya haɗawa da hannu. Ya faru da cewa dole ne in tattara bayanan bayanai.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

A kan Zabbix muna kunna Extention kawai. Ina tsammanin waɗanda suka yi amfani da Extention a Postgres ... Kuna kunna Extention kawai, ƙirƙira shi don bayanan Zabbix da kuke amfani da su.

Kuma mataki na karshe...

TimecaleDB. Hijira na teburin tarihi

Kuna buƙatar ƙirƙirar hypertable. Akwai aiki na musamman don wannan - Ƙirƙiri hypertable. A ciki, siga na farko shine tebur da ake buƙata a cikin wannan bayanan (wanda kuke buƙatar ƙirƙirar hypertable).

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Filin da za a ƙirƙira da shi, da chunk_time_interval (wannan shine tazara na chunks (bangarorin da ake buƙatar amfani da su) 86 shine rana ɗaya.

Migrate_data siga: Idan kun saka zuwa gaskiya, to wannan zai ƙaura duk bayanan yanzu zuwa guntun da aka riga aka ƙirƙira.

Na yi amfani da migrate_data da kaina - yana ɗaukar lokaci mai kyau, ya danganta da girman girman bayananku. Ina da fiye da terabyte - ya ɗauki sama da awa ɗaya don ƙirƙirar. A wasu lokuta, yayin gwaji, na goge bayanan tarihi don rubutu (history_text) da kirtani (history_str) don kar in canza su - ba su da ban sha'awa sosai a gare ni.

Kuma muna yin sabuntawa na ƙarshe a cikin db_extention: muna shigar da timescaledb don database da, musamman, Zabbix mu fahimci cewa akwai db_extention. Yana kunna shi kuma yana amfani da madaidaicin syntax da tambayoyi zuwa bayanan bayanai, ta amfani da waɗancan “fasalolin” waɗanda suka wajaba don TimescaleDB.

Tsarin uwar garken

Na yi amfani da sabobin biyu. Sabar farko ita ce ƙaramin injin kama-da-wane, na'urori masu sarrafawa 20, 16 gigabytes na RAM. Na saita Postgres 10.8 akan sa:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Tsarin aiki shine Debian, tsarin fayil shine xfs. Na yi ƙaramin saiti don amfani da wannan takamaiman bayanan bayanai, ban da abin da Zabbix kanta za ta yi amfani da shi. A kan wannan na'ura akwai uwar garken Zabbix, PostgreSQL da masu ɗaukar kaya.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Na yi amfani da wakilai 50 masu aiki waɗanda ke amfani da LoadableModule don samar da sakamako daban-daban cikin sauri. Su ne suka samar da kirtani, lambobi, da sauransu. Na cika ma'ajiyar bayanai da bayanai masu yawa. Da farko dai tsarin yana ƙunshe da abubuwa 5 na kowane mai masaukin baki, kuma kusan kowane nau'in bayanan yana ɗauke da faɗakarwa - domin wannan ya zama saitin gaske. Wani lokaci har ma kuna buƙatar fararwa fiye da ɗaya don amfani.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Na tsara tazarar sabuntawa da nauyin kanta ta hanyar amfani da wakilai 50 kawai (ƙara ƙarin), amma kuma ta amfani da abubuwan bayanai masu ƙarfi da rage tazarar sabuntawa zuwa 4 seconds.

Gwajin aiki. PostgreSQL: 36 dubu NVPs

Ƙaddamarwar farko, saitin farko da na samu ya kasance akan tsantsar PostreSQL 10 akan wannan kayan masarufi (daraja dubu 35 a sakan daya). Gabaɗaya, kamar yadda kuke gani akan allon, shigar da bayanai yana ɗaukar ɓangarori na daƙiƙa - komai yana da kyau da sauri, SSDs (200 gigabytes). Abinda kawai shine 20 GB ya cika da sauri.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Za a sami irin waɗannan jadawali da yawa a nan gaba. Wannan daidaitaccen dashboard ɗin uwar garken Zabbix ne.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

jadawali na farko shine adadin dabi'u ta biyu (blue, saman hagu), 35 dabi'u a cikin wannan yanayin. Wannan (cibiyar saman) ita ce lodin tsarin gine-gine, kuma wannan (a saman dama) ita ce ɗora nauyin tafiyar matakai na ciki: tarihin syncers da mai kula da gida, wanda a nan (cibiyar ƙasa) ta kasance tana gudana na ɗan lokaci.

Wannan jadawali (cibiyar ƙasa) yana nuna amfani da ValueCache - nawa ValueCache ya buga don faɗakarwa (ƙimomi dubu da yawa a sakan daya). Wani muhimmin jadawali shi ne na huɗu (a hagu na hagu), wanda ke nuna amfani da HistoryCache, wanda na yi magana a kai, wanda shine buffer kafin shigar da bayanai.

Gwajin aiki. PostgreSQL: 50 dubu NVPs

Na gaba, na ƙara nauyin zuwa ƙimar 50 dubu a sakan daya akan kayan aikin guda ɗaya. Lokacin da Mai Kula da Gida ya ɗora, an yi rikodin ƙima dubu 10 a cikin daƙiƙa 2-3 tare da lissafi. Menene, a zahiri, ana nunawa a cikin hoton sikirin mai zuwa:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

"Mai tsaron gida" ya riga ya fara tsoma baki tare da aiki, amma gabaɗaya, nauyin da ke kan masu tarko na tarihi-sinker har yanzu yana kan matakin 60% (jari na uku, saman dama). HistoryCache ya riga ya fara cika da kuzari yayin da Mai aikin gida ke gudana (a hagu na ƙasa). Ya kusan rabin gigabyte, 20% cike.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Gwajin aiki. PostgreSQL: 80 dubu NVPs

Sannan na kara shi zuwa darajar dubu 80 a sakan daya:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Ya kasance kusan abubuwa 400 na bayanai, masu jawo dubu 280. Abin da aka saka, kamar yadda kuke gani, dangane da nauyin maharan tarihi (akwai 30 daga cikinsu) ya riga ya yi yawa. Sa'an nan na ƙara daban-daban sigogi: tarihi sinkers, cache ... A kan wannan hardware, lodi a kan tarihi sinkers ya fara karuwa zuwa matsakaicin, kusan "a kan shiryayye" - bisa ga haka, HistoryCache ya shiga cikin wani babban kaya:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Duk wannan lokacin na lura da duk sigogin tsarin (yadda ake amfani da na'ura mai sarrafawa, RAM) kuma na gano cewa amfani da faifai shine matsakaicin - Na sami matsakaicin ƙarfin wannan faifai akan wannan kayan aikin, akan wannan injin kama-da-wane. "Postgres" ya fara zubar da bayanai sosai a irin wannan ƙarfin, kuma faifan ba ya da lokacin rubutawa, karantawa ...

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Na ɗauki wani uwar garken wanda tuni yana da masu sarrafawa 48 da 128 gigabytes na RAM:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Na kuma “saukar da shi” - shigar da tarihin daidaitawa (guda 60) kuma na sami aiki mai karɓuwa. A gaskiya ma, ba mu "a kan shiryayye ba," amma wannan tabbas shine iyakar yawan aiki, inda ya riga ya zama dole don yin wani abu game da shi.

Gwajin aiki. TimecaleDB: 80 NVPs

Babban aikina shine amfani da TimecaleDB. Kowane jadawali yana nuna tsoma:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Waɗannan gazawar su ne ainihin ƙauran bayanai. Bayan haka, a cikin uwar garken Zabbix, bayanan ɗorawa na masu sintiri na tarihi, kamar yadda kuke gani, sun canza da yawa. Yana ba ku damar saka bayanai kusan sau 3 cikin sauri kuma ku yi amfani da ƙasa da HistoryCache - don haka za ku sami isar da bayanai akan lokaci. Kuma, 80 dabi'u a dakika daya - wani fairly high kudi (ba shakka, ba ga Yandex). Gabaɗaya wannan ƙaƙƙarfan saiti ne, mai uwar garken guda ɗaya.

Gwajin aikin PostgreSQL: NVPs dubu 120

Bayan haka, na ƙara ƙimar adadin abubuwan bayanan zuwa rabin miliyan kuma na karɓi ƙididdige ƙimar 125 dubu a cikin daƙiƙa guda:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Kuma na sami waɗannan jadawali:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

A ka'ida, wannan saitin aiki ne, yana iya aiki na dogon lokaci. Amma da yake ina da faifan terabyte 1,5 kawai, na yi amfani da shi a cikin kwanaki biyu. Abu mafi mahimmanci shine cewa a lokaci guda an ƙirƙiri sabbin ɓangarori akan TimecaleDB, kuma wannan ba a lura da shi gabaɗaya don aiki ba, wanda ba za a iya faɗi game da MySQL ba.

Yawanci, ana ƙirƙira ɓangarori da dare, saboda wannan gabaɗaya yana toshe shigarwa da aiki tare da tebur kuma yana iya haifar da lalata sabis. A wannan yanayin ba haka lamarin yake ba! Babban aikin shine gwada iyawar TimecaleDB. Sakamakon ya kasance adadi mai zuwa: 120 dabi'u a sakan daya.

Akwai kuma misalai a cikin al'umma:

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Mutumin kuma ya kunna TimecaleDB kuma nauyin yin amfani da io.weight ya sauke akan mai sarrafawa; kuma amfani da abubuwan aiwatarwa na ciki shima ya ragu saboda haɗa TimecaleDB. Haka kuma, waɗannan faifan pancake ne na yau da kullun, wato, injina na yau da kullun akan faifai na yau da kullun (ba SSDs ba)!

Don wasu ƙananan saiti waɗanda aka iyakance ta aikin faifai, TimecaleDB, a ganina, mafita ce mai kyau. Zai ba ka damar ci gaba da aiki kafin yin ƙaura zuwa kayan aiki mai sauri don bayanan bayanai.

Ina gayyatar ku duka zuwa abubuwan da suka faru: Taron a Moscow, Babban Taron a Riga. Yi amfani da tashoshin mu - Telegram, forum, IRC. Idan kuna da wasu tambayoyi, ku zo kan teburinmu, zamu iya magana game da komai.

Tambayoyin Masu Sauraro

Tambaya daga masu sauraro (nan gaba - A): - Idan TimescaleDB yana da sauƙin daidaitawa, kuma yana ba da irin wannan haɓakar haɓakawa, to watakila wannan ya kamata a yi amfani da shi azaman mafi kyawun aiki don daidaita Zabbix tare da Postgres? Kuma akwai wasu matsaloli da rashin amfani na wannan bayani, ko bayan haka, idan na yanke shawarar yin Zabbix don kaina, zan iya ɗaukar Postgres cikin sauƙi, shigar da Timecale a can nan da nan, yi amfani da shi kuma kada kuyi tunanin kowace matsala?

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

AG: - Ee, zan iya cewa wannan shawara ce mai kyau: yi amfani da Postgres nan da nan tare da tsawo na TimescaleDB. Kamar yadda na riga na fada, yawancin sake dubawa masu kyau, duk da cewa wannan "siffa" gwaji ne. Amma a zahiri gwaje-gwaje sun nuna cewa wannan babban bayani ne (tare da TimescaleDB) kuma ina tsammanin zai haɓaka! Muna sa ido kan yadda wannan tsawaita ke tasowa kuma za mu yi canje-canje kamar yadda ake buƙata.

Ko da a lokacin ci gaba, mun dogara da ɗaya daga cikin sanannun "fasali": yana yiwuwa a yi aiki tare da chunks kadan daban. Amma sai suka yanke shi a saki na gaba, kuma dole ne mu daina dogaro da wannan lambar. Zan ba da shawarar yin amfani da wannan bayani akan saiti da yawa. Idan kuna amfani da MySQL... Don matsakaita saitin, kowane bayani yana aiki da kyau.

A: - A kan jadawali na ƙarshe daga al'umma, akwai jadawali tare da "Mai aikin gida":

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Ya ci gaba da aiki. Me mai kula da gida yake yi da TimescaleDB?

AG: - Yanzu ba zan iya cewa tabbas ba - Zan dubi lambar kuma in gaya muku dalla-dalla. Yana amfani da tambayoyin TimescaleDB ba don share guntu ba, amma don tara su ko ta yaya. Ban shirya amsa wannan tambayar ta fasaha ba tukuna. Za mu sami ƙarin bayani a tsaye yau ko gobe.

A: - Ina da irin wannan tambaya - game da aikin aikin sharewa a cikin Timecale.
A (amsa daga masu sauraro): - Lokacin da kuka share bayanai daga tebur, idan kun yi ta hanyar gogewa, to kuna buƙatar shiga cikin tebur - gogewa, tsaftacewa, yiwa komai alama don vacuum na gaba. A cikin Timecale, tunda kuna da chunks, zaku iya sauke. Kusan magana, kawai kuna gaya wa fayil ɗin da ke cikin manyan bayanai: "Share!"

Timecale kawai ya fahimci cewa irin wannan guntun ba ya wanzu. Kuma tunda an haɗa shi cikin mai tsara tambaya, yana amfani da ƙugiya don kama yanayin ku a zaɓi ko wasu ayyuka kuma nan da nan ya fahimci cewa wannan guntun ba ya wanzu - "Ba zan ƙara zuwa can ba!" (babu bayanai). Shi ke nan! Wato, ana maye gurbin sikanin tebur da gogewar fayil ɗin binary, don haka yana da sauri.

A: – Mun riga mun tabo batun wanda ba SQL ba. Kamar yadda na fahimta, Zabbix baya buƙatar gyara bayanan da gaske, kuma duk wannan wani abu ne kamar log. Shin yana yiwuwa a yi amfani da na'urori na musamman waɗanda ba za su iya canza bayanan su ba, amma a lokaci guda ajiyewa, tarawa, da rarrabawa da sauri - Clickhouse, alal misali, wani abu kamar Kafka?... Kafka ma log! Shin zai yiwu a haɗa su ko ta yaya?

AG: - Ana iya yin saukewa. Muna da wani “fasalin” tun daga sigar 3.4: zaku iya rubuta duk fayilolin tarihi, abubuwan da suka faru, komai zuwa fayiloli; sannan a aika da shi zuwa kowane rumbun adana bayanai ta hanyar amfani da wani mai sarrafa. A gaskiya ma, mutane da yawa suna sake yin aiki kuma suna rubuta kai tsaye zuwa ma'ajin bayanai. A kan tashi, masu sintiri na tarihi suna rubuta duk wannan cikin fayiloli, juya waɗannan fayilolin, da sauransu, kuma zaku iya canja wurin wannan zuwa Clickhouse. Ba zan iya faɗi game da tsare-tsare ba, amma watakila ƙarin tallafi ga mafita na NoSQL (kamar Clickhouse) zai ci gaba.

A: – Gaba ɗaya, shi dai itace cewa za ka iya gaba daya rabu da mu postgres?

AG: - Tabbas, mafi wahala a cikin Zabbix shine tebur na tarihi, wanda ke haifar da mafi yawan matsaloli, da abubuwan da suka faru. A wannan yanayin, idan ba ku adana abubuwan da suka faru na dogon lokaci ba kuma ku adana tarihin tare da abubuwan da ke faruwa a cikin wasu ajiya mai sauri, to gaba ɗaya, ina tsammanin, ba za a sami matsala ba.

A: - Za ku iya kimanta saurin sauri komai zai yi aiki idan kun canza zuwa Clickhouse, alal misali?

AG: – Ban gwada shi ba. Ina tsammanin cewa akalla za a iya samun lambobi iri ɗaya a sauƙaƙe, ganin cewa Clickhouse yana da nasa ke dubawa, amma ba zan iya faɗi tabbas ba. Yana da kyau a gwada. Duk ya dogara da ƙayyadaddun tsari: yawancin runduna da kuke da su, da sauransu. Saka abu ɗaya ne, amma kuma kuna buƙatar dawo da wannan bayanan - Grafana ko wani abu dabam.

A: - Don haka muna magana ne game da yaƙi daidai, kuma ba game da babban fa'idar waɗannan bayanan bayanai masu sauri ba?

AG: – Ina tsammanin lokacin da muka haɗu, za a sami ƙarin ingantattun gwaje-gwaje.

A: - Ina tsohon RRD mai kyau ya tafi? Me ya sa ku canza zuwa SQL databases? Da farko, an tattara duk ma'auni akan RRD.

AG: - Zabbix yana da RRD, watakila a cikin tsohuwar sigar. Akwai ko da yaushe SQL databases - a classic m. Tsarin gargajiya shine MySQL, PostgreSQL (sun wanzu na dogon lokaci). Kusan ba mu taɓa yin amfani da mahaɗar mahaɗar bayanai don SQL da RRD bayanai ba.

HighLoad++, Andrey Gushchin (Zabbix): babban aiki da rarrabuwa na asali

Wasu tallace-tallace 🙂

Na gode da kasancewa tare da mu. Kuna son labaran mu? Kuna son ganin ƙarin abun ciki mai ban sha'awa? Goyon bayan mu ta hanyar ba da oda ko ba da shawara ga abokai, girgije VPS don masu haɓakawa daga $ 4.99, analog na musamman na sabar matakin shigarwa, wanda mu muka ƙirƙira muku: Duk gaskiyar game da VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps daga $19 ko yadda ake raba sabar? (akwai tare da RAID1 da RAID10, har zuwa 24 cores kuma har zuwa 40GB DDR4).

Dell R730xd 2x mai rahusa a cibiyar bayanan Equinix Tier IV a Amsterdam? Nan kawai 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV daga $199 a cikin Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - daga $99! Karanta game da Yadda ake gina Infrastructure Corp. aji tare da amfani da sabar Dell R730xd E5-2650 v4 masu darajan Yuro 9000 akan dinari?

source: www.habr.com

Add a comment