HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Tichatarisa kuti Zabbix inoshanda sei neTimescaleDB dhatabhesi seyokumashure. Tichakuratidza kuti ungatanga sei kubva pakatanga uye kuti ungatama sei kubva kuPostgreSQL. Isu tichapawo kuenzanisa kwekuita bvunzo dzemagadzirirwo maviri.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

HighLoad ++ Siberia 2019. Tomsk Hall. Chikumi 24, 16:00. Izvi uye mharidzo. Musangano unotevera weHighLoad++ uchaitwa muna Kubvumbi 6 na7, 2020 muSt. Details uye matikiti batanidzo.

Andrey Gushchin (pano - AG): -Ini ndiri ZABBIX tekinoroji yekutsigira mainjiniya (inozonzi "Zabbix"), mudzidzisi. Ndanga ndichishanda mukutsigira kwehunyanzvi kweanopfuura makore 6 uye ndave neruzivo rwakananga nekuita. Nhasi ndichataura pamusoro pekuita izvo TimescaleDB inogona kupa kana ichienzaniswa nePostgreSQL yenguva dzose 10. Uyewo, chimwe chikamu chekutanga pamusoro pekuti inoshanda sei muhuwandu.

Zvinetso zvekugadzirwa kwepamusoro: kubva pakuunganidzwa kwedata kusvika pakucheneswa kwedata

Kutanga, kune mamwe matambudziko ekuita ayo ese ekutarisa system anotarisana nawo. Dambudziko rekutanga rekugadzira kuunganidza uye kugadzirisa data nekukurumidza.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Iyo yakanaka yekutarisa sisitimu inofanirwa kukurumidza, panguva yakakodzera kugamuchira data rese, kuigadzirisa zvinoenderana neinokonzeresa mataurirwo, ndiko kuti, igadzirise zvinoenderana nemamwe maitiro (izvi zvakasiyana mumasisitimu akasiyana) uye woichengeta mudhatabhesi kuti ushandise iyi data mune ramangwana.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Chechipiri chekuita dambudziko ndeyekuchengetedza nhoroondo. Chengetedza mudhatabhesi kazhinji uye uwane nekukurumidza uye nyore kuwana kune aya metrics akaunganidzwa nekufamba kwenguva. Chinonyanya kukosha ndechekuti iyi data iri nyore kuwana, shandisa mumishumo, magirafu, zvinokonzeresa, mune mamwe madhiri echikumbaridzo, yekuzivisa, nezvimwe.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Dambudziko rechitatu rekuita kucheneswa kwenhoroondo, ndiko kuti, kana wasvika padanho rausingade kuchengetedza chero akadzama metrics akaunganidzwa pamusoro pemakore mashanu (kunyangwe mwedzi kana mwedzi miviri). Mamwe ma network node akadzimwa, kana mamwe mahosts, metrics haachadiwe nekuti atove echinyakare uye haachaunganidzwa. Zvese izvi zvinoda kucheneswa kuti dhatabhesi rako risakure zvakanyanya. Kazhinji, kubvisa nhoroondo inowanzova muedzo wakakomba wekuchengetedza - kazhinji ine simba rakasimba pakuita.

Nzira yekugadzirisa sei caching matambudziko?

Ini zvino ndichataura zvakananga nezve Zabbix. MuZabbix, yekutanga uye yechipiri mafoni anogadziriswa uchishandisa caching.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Kuunganidza uye kugadzirisa data - Isu tinoshandisa RAM kuchengetedza iyi data yese. Aya data zvino achakurukurwa zvakadzama.

Zvakare padivi redatabase pane imwe caching yezvisarudzo zvikuru - zvemagirafu nezvimwe zvinhu.

Kuchengetera padivi peZabbix server pachayo: isu tine ConfigurationCache, ValueCache, HistoryCache, TrendsCache. Chii?

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

ConfigurationCache ndiyo huru cache yatinochengeta metrics, mauto, data data, zvinokonzeresa; zvese zvaunoda kuti ugadzirise preprocessing, kuunganidza data, kubva kune iyo mauto kuunganidza, neiyo frequency. Zvese izvi zvakachengetwa muConfigurationCache kuitira kuti usaende kudhatabhesi uye kugadzira mibvunzo isingaite. Mushure mekunge sevha yatanga, tinogadzirisa iyi cache (igadzirise) uye inovandudza nguva nenguva (zvichienderana nekugadzirisa zvirongwa).

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Kuchengeta muZabbix. Data collection

Heino dhayagiramu yakakura kwazvo:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Iwo makuru muchirongwa ndeava vateresi:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Aya ndiwo maitiro egungano pachawo, "vavhoti" vakasiyana-siyana vane basa remhando dzakasiyana dzemagungano. Ivo vanounganidza data kuburikidza neicmp, ipmi, uye akasiyana maprotocol uye voaendesa kune preprocessing.

PreProcessing HistoryCache

Zvakare, kana isu takaverenga data data (avo vanoziva Zabbix vanoziva), ndiko kuti, akaverengerwa, aggregation data zvinhu, tinozvitora zvakananga kubva kuValueCache. Ndichakuudza kuti inozadzwa sei gare gare. Vese ava vaunganidzi vanoshandisa ConfigurationCache kuti vagamuchire mabasa avo vobva vaapfuudza kune preprocessing.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Preprocessing inoshandisawo ConfigurationCache kuwana preprocessing matanho uye kugadzirisa iyi data nenzira dzakasiyana. Kutanga kubva mushanduro 4.2, takaiendesa kune proxy. Izvi zviri nyore, nekuti preprocessing pachayo ibasa rakaoma. Uye kana iwe uine Zabbix yakakura kwazvo, ine nhamba huru yezvinhu zve data uye yakakwira yekuunganidza frequency, zvino izvi zvinorerutsa basa zvakanyanya.

Saizvozvo, mushure mekunge tagadzirisa iyi data neimwe nzira tichishandisa preprocessing, tinoichengeta muHistoryCache kuitira kuti tienderere mberi. Izvi zvinopedzisa kuunganidzwa kwedata. Tinoenderera mberi kune nzira huru.

Nhoroondo syncer basa

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Iyo huru maitiro muZabbix (sezvo iri monolithic architecture) ndeye Nhoroondo syncer. Iyi ndiyo nzira huru inobata zvakananga nekugadziriswa kweatomu yechinhu chimwe nechimwe che data, kureva kukosha kwega kwega:

  • kukosha kunouya (inotora kubva kuHistoryCache);
  • inotarisa muKugadziridza syncer: kana paine zvinokonzeresa kuverenga - kuzviverengera;
    kana paine - inogadzira zviitiko, inogadzira kukwira kuitira kuti igadzire yambiro, kana zvichidikanwa maererano nekugadzirisa;
  • zvinyorwa zvinokonzeresa zvekugadzirisa kunotevera, kuunganidza; kana iwe ukaunganidza pamusoro peawa yekupedzisira uye zvichingodaro, kukosha uku kunorangarirwa neValueCache kuitira kuti usaende kutafura yenhoroondo; Saka, iyo ValueCache yakazadzwa neiyo data inodiwa iyo inofanirwa kuverenga zvinokonzeresa, zvakaverengerwa zvinhu, nezvimwe;
  • ipapo Nhoroondo syncer inonyora data rese kune dhatabhesi;
  • iyo dhatabhesi inovanyorera ku diski - apa ndipo panopera maitiro ekugadzirisa.

Database. Caching

Padivi re database, kana iwe uchida kuona magirafu kana mamwe mishumo pane zviitiko, kune akasiyana cache. Asi mushumo uyu handisi kuzotaura nezvavo.

Kune MySQL kune Innodb_buffer_pool, uye boka reakasiyana cache anogona zvakare kugadzirwa.
Asi aya ndiwo makuru:

  • shared_buffers;
  • inoshanda_cache_size;
  • shared_pool.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Kune ese dhatabhesi, ndakati kune mamwe macache anobvumidza iwe kuchengeta muRAM iyo data inowanzodiwa pamibvunzo. Vane matekinoroji avo eizvi.

About Database Performance

Saizvozvo, kune nharaunda yemakwikwi, ndiko kuti, sevha yeZabbix inounganidza data uye inorekodha. Kana yatangwazve, inoverengawo kubva munhoroondo kuzadza iyo ValueCache zvichingodaro. Pano iwe unogona kuva nezvinyorwa uye mishumo inoshandisa Zabbix API, iyo yakavakirwa pawebhu interface. Zabbix API inopinda mudhatabhesi uye inogamuchira data inodiwa kuti iwane magirafu, mishumo, kana imwe mhando yerondedzero yezviitiko, matambudziko achangoburwa.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Zvakare yakakurumbira yekuona mhinduro ndeye Grafana, iyo vashandisi vedu vanoshandisa. Inokwanisa kupinda zvakananga mukati mese kuburikidza neZabbix API uye kuburikidza nedhatabhesi. Iyo zvakare inogadzira imwe makwikwi ekutora data: yakakwenenzverwa, zvirinani tuning yedatabase inodiwa kuti ienderane nekukasira kuburitsa kwemhedzisiro uye kuyedzwa.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Kubvisa nhoroondo. Zabbix ane Housekeeper

Kufona kwechitatu kunoshandiswa muZabbix kudzima nhoroondo uchishandisa Housekeeper. Muchengeti wemba anotevera zvigadziriso zvese, kureva kuti, data data yedu inoratidza kuti inguva yakadii kuchengeta (mumazuva), inguva yakadii kuchengetedza maitiro, uye masimba ekuchinja.

Ini handina kutaura nezveTrendCache, yatinoverenga panhunzi: data inosvika, tinoiunganidza kweawa imwe (kunyanya idzi nhamba dzeawa yekupedzisira), huwandu hwacho huri pakati / hushoma uye tinoinyora kamwe paawa tafura yesimba rekuchinja (β€œTrends”) . "Muchengeti wemba" anotanga uye anobvisa data kubva kudhatabhesi achishandisa nguva dzose anosarudza, izvo zvisingawanzoshanda.

Nzira yekunzwisisa sei kuti haibatsiri? Iwe unogona kuona unotevera mufananidzo pane ekuita magirafu emukati maitiro:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Yako Nhoroondo syncer inogara yakabatikana (tsvuku girafu). Uye iyo "tsvuku" girafu inoenda pamusoro. Uyu "Muchengeti wemba" anotanga uye anomirira kuti dhatabhesi ibvise mitsetse yese yayakataura.

Ngatitorei imwe Item ID: iwe unofanirwa kudzima yekupedzisira zviuru zvishanu; zvirokwazvo, nema indexes. Asi kazhinji iyo dataset yakakura kwazvo - iyo dhatabhesi ichiri kuiverenga kubva kudhisiki uye inoiisa mu cache, uye iyi inodhura kwazvo mashandiro edhatabhesi. Zvichienderana nehukuru hwayo, izvi zvinogona kutungamirira kune mamwe matambudziko ekuita.

Unogona kudzima Muchengeti Wemba nenzira iri nyore - isu tine inozivikanwa pawebhu interface. Settings in Administration general (settings ye "Housekeeper") tinodzima kuchengetedza kwemukati kwenhoroondo yemukati uye maitiro. Saizvozvo, Housekeeper haachadzore izvi:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Chii chaungaita chinotevera? Iwe wakaidzima, magirafu ako akadzikama kunze ... Ndeapi mamwe matambudziko angamuka munyaya iyi? Chii chingabatsira?

Kupatsanura (chikamu)

Kazhinji izvi zvinogadziriswa neimwe nzira pane yega yega yehukama dhatabhesi yandanyora. MySQL ine tekinoroji yayo. Asi zvakazara iwo akafanana zvakanyanya kana zvasvika kune PostgreSQL 10 uye MySQL. Ehe, kune misiyano yakawanda yemukati mashandisirwo ayo ese uye kuti zvese zvinokanganisa sei kuita. Asi kazhinji, kusikwa kwechikamu chitsva kazhinji kunotungamira kune mamwe matambudziko.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Zvichienderana neseta yako (yakawanda sei data yaunogadzira muzuva rimwe), ivo vanowanzoisa iyo shoma - iri izuva 1 / batch, uye ne "maitiro", masimba ekuchinja - 1 mwedzi / batch nyowani. Izvi zvinogona kuchinja kana iwe uine yakakura kwazvo setup.

Ngatitaurei ipapo nezve saizi yekuseta: kusvika zviuru zvishanu zvitsva pasekondi (inonzi nvps) - iyi ichaonekwa sediki "setup". Avhareji - kubva pa5 kusvika ku5 zviuru zvakakosha pasekondi. Zvese zviri pamusoro zvatove zvakakura uye zvakakura kwazvo zvimisikidzo zvinoda kunyatso gadzirisa dhatabhesi.

Pakuisa kwakakura kwazvo, zuva rimwe rinogona kunge risiri rakakwana. Ini pachangu ndakaona zvikamu paMySQL zve1 gigabytes pazuva (uye panogona kunge paine zvimwe). Iyi yakawanda kwazvo data, iyo inogona kutungamirira kune mamwe matambudziko. Inoda kuderedzwa.

Sei uchida partitioning?

Izvo Partitioning inopa, ndinofunga munhu wese anoziva, kugovera tafura. Kazhinji aya mafaera akaparadzana pane diski uye zvikumbiro zvespan. Iyo inosarudza chikamu chimwe zvakanyanya zvakanyanya kana chiri chikamu chezvakajairwa kupatsanura.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

KuZabbix, kunyanya, inoshandiswa nehuwandu, nehuwandu, kureva kuti, tinoshandisa timestamp (nhamba yenguva dzose, nguva kubva pakutanga kwegore). Iwe unotsanangura kutanga kwezuva / kupera kwezuva, uye ichi ndicho chikamu. Saizvozvo, kana iwe uchikumbira data ine mazuva maviri ekuzvarwa, zvese zvinodzoserwa kubva kudhatabhesi nekukurumidza, nekuti iwe unongoda kurodha faira rimwe chete mu cache uye woridzosera (pane tafura hombe).

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Mazhinji dhatabhesi zvakare anomhanyisa kuisa (kuisa mune imwe tafura yemwana). Ndiri kutaura zvinonzwisisika izvozvi, asi izvi zvinogoneka zvakare. Kugovana kazhinji kunobatsira.

Elasticsearch yeNoSQL

Munguva pfupi yapfuura, muna 3.4, takashandisa mhinduro yeNoSQL. Yakawedzera kugona kunyora muElasticsearch. Iwe unogona kunyora mamwe marudzi: iwe unosarudza - kana kunyora nhamba kana zvimwe zviratidzo; tine tambo mavara, unogona kunyora matanda kuElasticsearch... Saizvozvowo, web interface ichawanawo Elasticsearch. Izvi zvinoshanda zvakanaka mune dzimwe nguva, asi panguva ino zvinogona kushandiswa.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

TimescaleDB. Hypertables

Kune 4.4.2 takateerera kune chinhu chimwe chete seTimescaleDB. Chii? Uku kuwedzeredza kwePostgreSQL, ndiko kuti, ine yemuno PostgreSQL interface. Uyezve, iyi yekuwedzera inokutendera kuti ushande zvakanyanya netimeseries data uye kuve neotomatiki kugovera. Zvazvinoita:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Izvi zvine hypertable - kune pfungwa yakadaro mu Timescale. Iyi hypertable yaunogadzira, uye ine chunks. Chunks zvikamu, aya matafura evana, kana ndisiri kukanganisa. Inoshanda chaizvo.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

TimescaleDB uye PostgreSQL

Sezvinovimbiswa nevagadziri veTimescaleDB, vanoshandisa algorithm chaiyo yekugadzirisa mibvunzo, kunyanya kuisa, iyo inobvumira kuita kunenge kuchiitwa nekukura kuri kuwedzera kweiyo dataset yekuisa. Kureva kuti, mushure memitsara yemamiriyoni mazana maviri ePostgres, iyo yakajairwa inotanga kunyura zvakanyanya uye kurasikirwa nekuita chaiko kusvika zero, nepo Timescale inobvumidza iwe kuti uise inoisa zvinobudirira sezvinobvira nechero huwandu hwe data.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Maitiro ekuisa TimescaleDB? Zviri nyore!

Iri muzvinyorwa, zvinotsanangurwa - unogona kuiisa kubva pamapakeji chero ipi zvayo ... Zvinoenderana nepamutemo Postgres mapakeji. Inogona kuunganidzwa nemaoko. Zvakaitika kuti ndaifanira kuunganidza kune database.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

PaZabbix isu tinongo mutsa Extention. Ndinofunga kuti avo vakashandisa Extention muPostgres... Iwe unongoshandisa Extention, gadzira iyo Zabbix database yauri kushandisa.

Uye danho rekupedzisira...

TimescaleDB. Kutama kwematafura enhoroondo

Iwe unofanirwa kugadzira hypertable. Pane basa rinokosha reizvi - Gadzira hypertable. Mariri, yekutanga parameter ndiyo tafura inodiwa mune iyi database (iyo yaunoda kugadzira hypertable).

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Nzvimbo yekugadzira, uye chunk_time_interval (iyi ndiyo nguva yezvimedu (zvikamu zvinoda kushandiswa). 86 izuva rimwe.

Migrate_data parameter: Kana iwe ukaisa kune chokwadi, saka izvi zvinofambisa data rese razvino kune rakafanogadzirwa chunks.

Ini ndashandisa migrate_data pachangu - zvinotora nguva yakati rebei, zvichienderana nekuti yakakura sei database yako. Ndakanga ndine anopfuura terabyte - zvakatora inopfuura awa kugadzira. Mune zvimwe zviitiko, panguva yekuyedzwa, ndakadzima dhata renhoroondo yezvinyorwa (history_text) uye tambo (history_str) kuti ndirege kuvaendesa - vanga vasinganyanyi kunakidza kwandiri.

Uye isu tinoita yekupedzisira update mune yedu db_extention: isu tinoisa timescaledb kuitira kuti dhatabhesi uye, kunyanya, Zabbix yedu inonzwisisa kuti kune db_extention. Anoimutsa uye anoshandisa syntax chaiyo uye mibvunzo kune dhatabhesi, achishandisa izvo "maficha" anodiwa kuTimescaleDB.

Server configuration

Ndakashandisa maseva maviri. Yekutanga sevha kadikidiki kadiki muchina, 20 processors, 16 gigabytes ye RAM. Ini ndakagadzirisa Postgres 10.8 pairi:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Iyo yekushandisa system yaive Debian, iyo faira system yaive xfs. Ini ndakagadzira mashoma marongero ekushandisa iyi dhatabhesi, kubvisa iyo Zabbix pachayo ichashandisa. Pamuchina mumwechete paive nezabbix server, PostgreSQL uye vamiririri vanotakura zvinhu.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Ndashandisa makumi mashanu anoshanda maajenti anoshandisa LoadableModule kukurumidza kuburitsa mhedzisiro dzakasiyana. Ndivo vakagadzira tambo, nhamba, nezvimwe zvakadaro. Ndakazadza dhatabhesi nedata rakawanda. Pakutanga, iyo gadziriso yaive ine zviuru zvishanu zve data zvinhu pamunhu mumwe nemumwe, uye ingangoita yega yega data chinhu chine chinokonzeresa - kuitira kuti iyi ive yekuseta chaiko. Dzimwe nguva unotoda kanopfuura kamwechete kanokonzeresa kushandisa.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Ini ndakadzora nguva yekuvandudza uye mutoro wega nekusangoshandisa makumi mashanu vamiririri (kuwedzera zvimwe), asi zvakare nekushandisa zvine simba data data uye kudzikisa nguva yekuvandudza kusvika masekonzi mana.

Performance test. PostgreSQL: 36 zviuru NVPs

Kutanga kwekutanga, yekutanga setup yandaive nayo yaive paPostreSQL 10 yakachena pane iyi hardware (35 zviuru zvakakosha pasekondi). Kazhinji, sezvauri kuona pachiratidziro, kuisa data kunotora zvikamu zvesekondi - zvese zvakanaka uye nekukurumidza, SSD inotyaira (200 gigabytes). Chinhu chete ndechekuti 20 GB inozadza nekukurumidza.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Pachave neakawanda magirafu akadaro mune ramangwana. Iyi ndiyo yakajairwa Zabbix server performance dashboard.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Yekutanga girafu ndiyo nhamba yezvakakosha pasekondi (bhuruu, kumusoro kuruboshwe), zviuru makumi matatu neshanu kukosha mune iyi kesi. Iyi (yepamusoro yepakati) ndiko kurodha kwemaitiro ekuvaka, uye uku (kumusoro kurudyi) ndiko kurodha kwemukati maitiro: nhoroondo syncers uye muchengeti wemba, ayo pano (pazasi pakati) anga achimhanya kwenguva yakati rebei.

Iyi girafu (yepakati pepakati) inoratidza kushandiswa kweValueCache - vangani ValueCache inorova yezvinokonzeresa (zviuru zvakati zvakakosha pasekondi). Imwe girafu yakakosha ndeyechina (pazasi kuruboshwe), iyo inoratidza kushandiswa kweHistoryCache, yandakataura nezvayo, inova buffer isati yapinza mudhatabhesi.

Performance test. PostgreSQL: 50 zviuru NVPs

Tevere, ini ndakawedzera mutoro kune zviuru makumi mashanu kukosha pasekondi pane imwechete hardware. Kana yakatakurwa neMuchengeti Wemba, zviuru gumi zvetsika dzakanyorwa mumasekonzi 50-10 nekuverenga. Chii, muchokwadi, chinoratidzwa mune inotevera skrini:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

"Muchengeti weimba" atotanga kuvhiringidza basa, asi kazhinji, mutoro wezvakaitika kare-sinker trappers uchiri pamwero we60% (girafu yechitatu, kumusoro kurudyi). NhoroondoCache inototanga kuzadza nesimba apo Muchengeti wemba ari kumhanya (pazasi kuruboshwe). Yakanga inenge hafu yegigabyte, 20% yakazara.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Performance test. PostgreSQL: 80 zviuru NVPs

Ipapo ndakaiwedzera kusvika ku80 zviuru zvetsika pasekondi:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Yakanga inosvika zviuru mazana mana zve data zvinhu, 400 zviuru zvinokonzeresa. Iyo yekuisa, sezvauri kuona, maererano nekuremerwa kwenhoroondo sinkers (paive ne280 yavo) yaive yatokwira zvakanyanya. Ipapo ini ndakawedzera siyana parameters: nhoroondo sinkers, cache ... Pamusoro Hardware ichi, mutoro pamusoro nhoroondo sinkers akatanga kuwedzera kusvika pakakwirira, anenge "pasherufu" - maererano, HistoryCache yakapinda zvikuru kwazvo mutoro:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Nguva yese iyi ndakatarisa ese ma parameter ehurongwa (mashandisirwo anoitwa processor, RAM) uye ndakaona kuti kushandiswa kwedisiki kwaive kwakanyanya - ndakawana huwandu hwepamusoro hwedhisiki iyi pane iyi hardware, pamushini uyu chaiwo. "Postgres" yakatanga kurasa dhata zvine simba zvakanyanya, uye dhisiki rakanga risisina nguva yekunyora, kuverenga ...

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Ndakatora imwe sevha yaitove ne 48 processors uye 128 gigabytes ye RAM:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Ini zvakare "ndakaigadzirisa" - ndakaisa Nhoroondo syncer (60 zvidimbu) uye ndakawana kuita kunogamuchirika. Muchokwadi, isu hatisi "pasherufu," asi iyi ingangodaro muganhu wekubudirira, uko kwatove kudikanwa kuita chimwe chinhu nezvazvo.

Performance test. TimescaleDB: 80 zviuru zveNVPs

Basa rangu guru raive rekushandisa TimescaleDB. Girafu imwe neimwe inoratidza dip:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Kukundikana uku ndiko kutama chaiko kwedata. Mushure meizvozvo, muSevha yeZabbix, iyo yekurodha nhoroondo yevanonyura nhoroondo, sezvauri kuona, yakachinja zvakanyanya. Iyo inokutendera iwe kuti uise data kanenge katatu nekukurumidza uye shandisa shoma HistoryCache - zvinoenderana, iwe uchave nedata rakaunzwa nenguva. Zvekare, zviuru makumi masere zvehunhu pasekondi imwe yakaringana mwero (zvechokwadi, kwete yeYandex). Pakazere iyi igadziriso yakakura, ine server imwe.

PostgreSQL performance test: 120 zviuru NVPs

Tevere, ndakawedzera kukosha kwenhamba ye data data kusvika hafu yemiriyoni uye ndakagamuchira yakaverengerwa kukosha kwe125 zviuru pasekondi:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Uye ndakawana aya magirafu:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Muchidimbu, iyi igadziriro yekushanda, inogona kushanda kwenguva yakareba. Asi sezvo ndaingova ne1,5 terabyte disk, ndakaishandisa mumazuva mashoma. Chinhu chinonyanya kukosha ndechekuti panguva imwechete zvikamu zvitsva zvakasikwa paTimescaleDB, uye izvi zvakanga zvisingazivikanwi zvachose nokuda kwekuita, izvo zvisingagoni kutaurwa nezveMySQL.

Kazhinji, zvikamu zvinogadzirwa usiku, nekuti izvi zvinowanzovhara kuisa uye kushanda nematafura uye zvinogona kutungamira mukuderedzwa kwesevhisi. Munyaya iyi izvi hazvisizvo! Basa guru raive rekuyedza kugona kweTimescaleDB. Mhedzisiro yaive iyi inotevera nhamba: 120 zviuru zvakakosha pasekondi.

Kunewo mienzaniso munharaunda:

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Munhu wacho akavhurawo TimescaleDB uye mutoro wekushandisa io.weight wakadonha pa processor; uye kushandiswa kwezvinhu zvemukati maitiro kwakadzikirawo nekuda kwekuiswa kweTimescaleDB. Uyezve, aya akajairwa pancake disks, kureva, akajairika muchina wemadhisiki akajairwa (kwete SSDs)!

Kune mamwe madiki maseti ayo anoganhurirwa nedhisiki kuita, TimescaleDB, mumaonero angu, mhinduro yakanaka kwazvo. Ichakubvumidza kuti uenderere mberi uchishanda usati watamira kune nekukurumidza hardware kune database.

Ndinokukokai mose kuzviitiko zvedu: Musangano muMoscow, Summit muRiga. Shandisa zviteshi zvedu - Teregiramu, foramu, IRC. Kana iwe uine chero mibvunzo, huya kudhesiki redu, tinogona kutaura nezve zvese.

Mibvunzo Yevateereri

Mubvunzo kubva kune vateereri (pano - A): - Kana TimescaleDB iri nyore kugadzirisa, uye inopa kuwedzera kwekuita kwakadaro, saka zvichida izvi zvinofanira kushandiswa senzira yakanakisisa yekugadzirisa Zabbix nePostgres? Uye pane zvipingamupinyi uye zvipingamupinyi zvemhinduro iyi, kana shure kwezvose, kana ndakasarudza kuzviitira Zabbix, ndinogona kutora Postgres nyore, kuisa Timescale ipapo pakarepo, shandisa uye usafunga nezvematambudziko?

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

AG: - Ehe, ndingati iyi ikurudziro yakanaka: shandisa Postgres nekukurumidza neTimescaleDB yekuwedzera. Sezvandambotaura, dzakawanda wongororo dzakanaka, pasinei nokuti "chinhu" ichi chiri kuedza. Asi chaizvo bvunzo dzinoratidza kuti iyi imhinduro yakanaka (ine TimescaleDB) uye ndinofunga ichashanduka! Isu tiri kutarisa kuti kuwedzera uku kunokura sei uye tichaita shanduko sezvinodiwa.

Kunyangwe panguva yekuvandudza, takavimba pane chimwe che "maitiro" avo anozivikanwa: zvaikwanisika kushanda nechunks zvishoma zvakasiyana. Asi vakazozvicheka mukuburitswa kunotevera, uye taifanira kumira kuvimba neiyi kodhi. Ini ndinokurudzira kushandisa iyi mhinduro pane akawanda setups. Kana ukashandisa MySQL ... Paavhareji setups, chero mhinduro inoshanda zvakanaka.

A: -Pamagirafu ekupedzisira kubva munharaunda, pakanga paine girafu rine "Muchengeti wemba":

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Akaramba achishanda. Muchengeti wemba anoita sei neTimescaleDB?

AG: - Iye zvino handigoni kutaura chokwadi - ndichatarisa kodhi uye ndikuudze zvakadzama. Inoshandisa TimescaleDB mibvunzo kwete kudzima chunks, asi neimwe nzira kuaunganidza. Ini handisati ndagadzirira kupindura uyu mubvunzo wehunyanzvi. Tozoziva zvakawanda kustand nhasi kana mangwana.

A: - Ini ndine mubvunzo wakafanana - nezve mashandiro ekudzima mashandiro mu Timescale.
A (mhinduro kubva kune vateereri): - Paunodzima data kubva patafura, kana ukazviita nekudzima, saka unofanirwa kupfuura netafura - bvisa, chenesa, maka zvese kuti zvigadziriswe mune ramangwana. MuTimescale, sezvo uine chunks, unogona kudonha. Zvichireva kutaura, iwe unongoudza iyo faira iri mune yakakura data: "Delete!"

Timescale inongonzwisisa kuti chunk yakadaro haipo. Uye sezvo yakabatanidzwa muchirongwa chemubvunzo, inoshandisa zvikorekedzo kubata mamiriro ako mukusarudza kana mamwe maoperation uye pakarepo inonzwisisa kuti chunk iyi haipo - "Ini handichaendi ikoko!" (data haipo). Ndizvo zvose! Kureva, tafura scan inotsiviwa nebhanari faira kudzima, saka inokurumidza.

A: -Takatobata pamusoro penyaya yevasiri-SQL. Sekunzwisisa kwandinoita, Zabbix haidi kunyatso shandura iyo data, uye izvi zvese chimwe chinhu senge danda. Zvinokwanisika here kushandisa dhatabhesi rakasarudzika risingakwanisi kushandura data ravo, asi panguva imwechete chengetedza, kuunganidza, uye kugovera zvakanyanya nekukurumidza - Clickhouse, semuenzaniso, chimwe chinhu Kafka-senge?.. Kafka zvakare danda! Zvinoita here neimwe nzira kuvabatanidza?

AG: - Kuburutsa kunogona kuitwa. Tine imwe "chimiro" kubva mushanduro 3.4: unogona kunyora zvese zvekare mafaera, zviitiko, zvimwe zvese kumafaira; uye wozoitumira kune chero imwe dhatabhesi uchishandisa imwe handler. Muchokwadi, vanhu vazhinji vanoshanda zvakare uye vanonyora zvakananga kune dhatabhesi. Panhunzi, vanonyura nhoroondo vanonyora zvese izvi mumafaira, tenderedza mafaera aya, zvichingodaro, uye unogona kuendesa izvi kuClickhouse. Ini handikwanise kutaura nezvezvirongwa, asi pamwe kumwe kutsigirwa kweNoSQL mhinduro (seClickhouse) ichaenderera mberi.

A: - Kazhinji, zvinoitika kuti iwe unogona kubvisa zvachose postgres?

AG: - Ehe, chikamu chakaoma kwazvo muZabbix matafura enhoroondo, ayo anogadzira matambudziko mazhinji, uye zviitiko. Muchiitiko ichi, kana iwe usingachengetedzi zviitiko kwenguva yakareba uye uchichengetedza nhoroondo nemafambiro mune imwe nzvimbo yekuchengetedza inokurumidza, saka kazhinji, ndinofunga, hapazovi nematambudziko.

A: - Unogona here kufungidzira kuti zvakakurumidza sei zvese zvichashanda kana ukachinja kuClickhouse, semuenzaniso?

AG: - Handina kuzviyedza. Ini ndinofunga kuti nhamba dzakafanana dzinogona kuwanikwa zviri nyore, zvichipihwa kuti Clickhouse ine yayo pachayo interface, asi ini handikwanise kutaura chokwadi. Zviri nani kuedza. Izvo zvese zvinoenderana nekugadziriswa: vangani mauto aunawo, uye zvichingodaro. Kuisa chinhu chimwe, asi iwe zvakare unofanirwa kudzoreredza iyi data - Grafana kana chimwe chinhu.

A: - Saka tiri kutaura nezve kurwa kwakaenzana, uye kwete nezve mukana mukuru weaya anokurumidza dhatabhesi?

AG: - Ndinofunga patinobatanidza, pachava nemiedzo yakarurama.

A: - Ndekupi kwakaenda RRD yakanaka yekare? Chii chakaita kuti uchinje kuSQL dhatabhesi? Pakutanga, metrics ese akaunganidzwa paRRD.

AG: - Zabbix aive neRRD, pamwe mune yekare vhezheni. Pagara paine SQL dhatabhesi - yemhando yepamusoro maitiro. Iyo yemhando yepamusoro nzira ndeyeMySQL, PostgreSQL (yave iripo kwenguva yakareba kwazvo). Isu hatina kumbobvira tashandisa yakajairwa interface yeSQL uye RRD dhatabhesi.

HighLoad++, Andrey Gushchin (Zabbix): kuita kwepamusoro uye kugovera kwekuzvarwa

Dzimwe ads πŸ™‚

Ndinokutendai nekugara nesu. Unoda zvinyorwa zvedu here? Unoda kuona zvimwe zvinonakidza zvemukati? Titsigire nekuisa odha kana kukurudzira kushamwari, Cloud VPS yevagadziri kubva kumadhora 4.99, yakasarudzika analogue yekupinda-level maseva, iyo yakagadzirwa nesu kuti iwe: Chokwadi chese nezveVPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kubva pamadhora makumi maviri kana kugovera sevha? (inowanikwa neRAID1 uye RAID10, kusvika ku24 cores uye kusvika ku40GB DDR4).

Dell R730xd 2 nguva yakachipa muEquinix Tier IV data center muAmsterdam? Chete pano 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kubva $199 muNetherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - kubva pamadhora makumi mapfumbamwe nemapfumbamwe! Verenga nezve Nzira yekuvaka Infrastructure Corp. kirasi nekushandiswa kweDell R730xd E5-2650 v4 maseva anokosha 9000 euros penny?

Source: www.habr.com

Voeg