Iesaku izlasÄ«t Alekseja Ä»esovska ziÅojuma atÅ”ifrÄjumu no Data Egret āPostgreSQL monitoringa pamatiā
Å ajÄ ziÅojumÄ Aleksejs Ä»esovskis runÄs par galvenajiem post-sacensÄ«bu statistikas punktiem, ko tie nozÄ«mÄ un kÄpÄc tiem vajadzÄtu bÅ«t klÄt monitoringÄ; par to, kÄdiem grafikiem jÄbÅ«t monitoringÄ, kÄ tos pievienot un kÄ tos interpretÄt. PÄrskats bÅ«s noderÄ«gs datu bÄzu administratoriem, sistÄmu administratoriem un izstrÄdÄtÄjiem, kuri interesÄjas par Postgres problÄmu novÄrÅ”anu.
Mani sauc Aleksejs Ä»esovskis, es pÄrstÄvu uzÅÄmumu Data Egret.
Daži vÄrdi par sevi. Es jau sen sÄku strÄdÄt kÄ sistÄmas administrators.
AdministrÄju visdažÄdÄkÄs Linux sistÄmas, strÄdÄju pie dažÄdÄm ar Linux saistÄ«tÄm lietÄm, t.i., virtualizÄcijas, monitoringa, strÄdÄju ar starpniekserveriem utt. Bet kÄdÄ brÄ«dÄ« sÄku vairÄk strÄdÄt ar datu bÄzÄm, PostgreSQL. Man viÅÅ” ļoti patika. Un kÄdÄ brÄ«dÄ« es sÄku strÄdÄt ar PostgreSQL lielÄko daļu sava darba laika. Un tÄ pakÄpeniski es kļuvu par PostgreSQL DBA.
Un visas savas karjeras laikÄ mani vienmÄr ir interesÄjuÅ”as statistikas, monitoringa un telemetrijas tÄmas. Un, kad es biju sistÄmas administrators, es ļoti cieÅ”i sadarbojos ar Zabbix. Un es uzrakstÄ«ju nelielu skriptu komplektu, piemÄram
Tagad es strÄdÄju pie PostgreSQL. Es jau rakstu vÄl vienu lietu, kas ļauj strÄdÄt ar PostgreSQL statistiku. Tas tiek saukts
Neliela ievada piezÄ«me. KÄdas situÄcijas ir mÅ«su klientiem, mÅ«su klientiem? Ir kaut kÄds negadÄ«jums saistÄ«bÄ ar datu bÄzi. Un, kad datu bÄze jau ir atjaunota, nÄk nodaļas vadÄ«tÄjs vai attÄ«stÄ«bas vadÄ«tÄjs un saka: "Draugi, mums ir jÄuzrauga datu bÄze, jo ir noticis kaut kas slikts un ir nepiecieÅ”ams, lai tas nenotiktu nÄkotnÄ." Un Å”eit sÄkas interesantais process, izvÄloties monitoringa sistÄmu vai pielÄgojot esoÅ”o uzraudzÄ«bas sistÄmu, lai jÅ«s varÄtu uzraudzÄ«t savu datu bÄzi - PostgreSQL, MySQL vai dažas citas. Un kolÄÄ£i sÄk ieteikt: āEs dzirdÄju, ka ir tÄda un tÄda datubÄze. Izmantosim." KolÄÄ£i sÄk strÄ«dÄties savÄ starpÄ. Un beigÄs izrÄdÄs, ka mÄs atlasÄm kaut kÄdu datu bÄzi, bet PostgreSQL monitorings tajÄ ir diezgan vÄji attÄlots un vienmÄr kaut kas jÄpievieno. PaÅemiet dažas repozitorijas no GitHub, klonÄjiet tÄs, pielÄgojiet skriptus un kaut kÄ pielÄgojiet tos. Un galu galÄ tas ir kaut kÄds roku darbs.
TÄpÄc Å”ajÄ runÄ es mÄÄ£inÄÅ”u sniegt jums zinÄÅ”anas par to, kÄ izvÄlÄties monitoringu ne tikai PostgreSQL, bet arÄ« datubÄzei. Un dos jums zinÄÅ”anas, kas ļaus pabeigt uzraudzÄ«bu, lai no tÄ gÅ«tu kÄdu labumu, lai jÅ«s varÄtu ar labumu uzraudzÄ«t savu datubÄzi, lai operatÄ«vi novÄrstu iespÄjamÄs ÄrkÄrtas situÄcijas.
Un idejas, kas bÅ«s Å”ajÄ pÄrskatÄ, var tieÅ”i pielÄgot jebkurai datubÄzei, vai tÄ bÅ«tu DBVS vai noSQL. TÄpÄc ir ne tikai PostgreSQL, bet bÅ«s daudz recepÅ”u, kÄ to izdarÄ«t PostgreSQL. BÅ«s vaicÄjumu piemÄri, entÄ«tiju piemÄri, kas PostgreSQL ir paredzÄtas uzraudzÄ«bai. Un, ja jÅ«su DBVS ir tÄs paÅ”as lietas, kas ļauj tÄs ievietot uzraudzÄ«bÄ, varat arÄ« tÄs pielÄgot, pievienot un bÅ«s labi.
Es nepiedalÄ«Å”os ziÅojumÄ
runÄt par to, kÄ piegÄdÄt un uzglabÄt metriku. Par datu pÄcapstrÄdi un pasniegÅ”anu lietotÄjam neko neteikÅ”u. Un es neko neteikÅ”u par brÄ«dinÄÅ”anu.
Bet stÄstam turpinoties, es rÄdÄ«Å”u dažÄdus esoÅ”Ä monitoringa ekrÄnuzÅÄmumus un kaut kÄ tos kritizÄÅ”u. Bet tomÄr es centÄ«Å”os nenosaukt zÄ«molus, lai neradÄ«tu Å”iem produktiem reklÄmu vai antireklÄmu. TÄpÄc visas sakritÄ«bas ir nejauÅ”as un ir atstÄtas jÅ«su iztÄlei.
PirmkÄrt, izdomÄsim, kas ir uzraudzÄ«ba. UzraudzÄ«ba ir ļoti svarÄ«ga lieta. Visi to saprot. TaÄu tajÄ paÅ”Ä laikÄ uzraudzÄ«ba neattiecas uz biznesa produktu un tieÅ”i neietekmÄ uzÅÄmuma peļÅu, tÄpÄc uzraudzÄ«bai laiks vienmÄr tiek atvÄlÄts uz atlikumu. Ja mums ir laiks, tad veicam uzraudzÄ«bu; ja nav laika, tad labi, iekļausim to atlikumos un kÄdreiz atgriezÄ«simies pie Å”iem uzdevumiem.
TÄpÄc no mÅ«su prakses, kad mÄs nonÄkam pie klientiem, uzraudzÄ«ba bieži ir nepilnÄ«ga un tajÄ nav nekÄdu interesantu lietu, kas palÄ«dzÄtu mums labÄk strÄdÄt ar datu bÄzi. Un tÄpÄc uzraudzÄ«ba vienmÄr ir jÄpabeidz.
Datu bÄzes ir tik sarežģītas lietas, kas arÄ« jÄuzrauga, jo datu bÄzes ir informÄcijas krÄtuve. Un informÄcija uzÅÄmumam ir ļoti svarÄ«ga, to nekÄdÄ veidÄ nevar pazaudÄt. TaÄu tajÄ paÅ”Ä laikÄ datu bÄzes ir ļoti sarežģītas programmatÅ«ras daļas. Tie sastÄv no liela skaita sastÄvdaļu. Un daudzas no Ŕīm sastÄvdaļÄm ir jÄuzrauga.
Ja mÄs runÄjam tieÅ”i par PostgreSQL, tad to var attÄlot shÄmas veidÄ, kas sastÄv no liela skaita komponentu. Å Ä«s sastÄvdaļas mijiedarbojas viena ar otru. Un tajÄ paÅ”Ä laikÄ PostgreSQL ir tÄ saucamÄ Stats Collector apakÅ”sistÄma, kas ļauj apkopot statistiku par Å”o apakÅ”sistÄmu darbÄ«bu un nodroÅ”inÄt kaut kÄdu saskarni administratoram vai lietotÄjam, lai viÅÅ” varÄtu apskatÄ«t Å”o statistiku.
Å Ä« statistika tiek parÄdÄ«ta noteikta funkciju un skatu veidÄ. Tos var saukt arÄ« par galdiem. Tas ir, izmantojot parasto psql klientu, varat izveidot savienojumu ar datu bÄzi, atlasÄ«t Ŕīs funkcijas un skatus un iegÅ«t dažus konkrÄtus skaitļus par PostgreSQL apakÅ”sistÄmu darbÄ«bu.
Varat pievienot Å”os skaitļus savai iecienÄ«tajai uzraudzÄ«bas sistÄmai, zÄ«mÄt grafikus, pievienot funkcijas un iegÅ«t analÄ«zi ilgtermiÅÄ.
Bet Å”ajÄ ziÅojumÄ es neaptvÄru visas Ŕīs funkcijas pilnÄ«bÄ, jo tas varÄtu aizÅemt visu dienu. Es burtiski pievÄrsÄ«Å”os divÄm, trim vai ÄetrÄm lietÄm un pastÄstÄ«Å”u, kÄ tÄs palÄ«dz uzlabot uzraudzÄ«bu.
Un, ja mÄs runÄjam par datu bÄzes uzraudzÄ«bu, tad kas ir jÄuzrauga? PirmkÄrt, mums ir jÄuzrauga pieejamÄ«ba, jo datubÄze ir pakalpojums, kas nodroÅ”ina piekļuvi datiem klientiem, un mums ir jÄuzrauga pieejamÄ«ba, kÄ arÄ« jÄnodroÅ”ina daži tÄs kvalitatÄ«vie un kvantitatÄ«vie raksturlielumi.
Mums ir arÄ« jÄuzrauga klienti, kas pieslÄdzas mÅ«su datubÄzei, jo tie var bÅ«t gan parasti klienti, gan kaitÄ«gi klienti, kas var kaitÄt datubÄzei. ViÅi arÄ« ir jÄuzrauga un jÄseko viÅu darbÄ«bai.
Kad klienti pieslÄdzas datu bÄzei, ir acÄ«mredzams, ka viÅi sÄk strÄdÄt ar mÅ«su datiem, tÄpÄc mums ir jÄuzrauga, kÄ klienti strÄdÄ ar datiem: ar kÄdÄm tabulÄm un mazÄkÄ mÄrÄ ar kÄdiem indeksiem. Tas ir, mums ir jÄizvÄrtÄ mÅ«su klientu radÄ«tÄ darba slodze.
TaÄu darba slodzi, protams, veido arÄ« pieprasÄ«jumi. Lietojumprogrammas pieslÄdzas datu bÄzei, piekļūst datiem, izmantojot vaicÄjumus, tÄpÄc ir svarÄ«gi izvÄrtÄt, kÄdi vaicÄjumi mums ir datu bÄzÄ, sekot lÄ«dzi to atbilstÄ«bai, lai tie nebÅ«tu rakstÄ«ti greizi, ka dažas opcijas ir jÄpÄrraksta un jÄpadara tÄ, lai tÄs strÄdÄtu ÄtrÄk un ar labÄku veiktspÄju.
Un tÄ kÄ mÄs runÄjam par datu bÄzi, datu bÄze vienmÄr ir fona procesi. Fona procesi palÄ«dz uzturÄt datu bÄzes veiktspÄju labÄ lÄ«menÄ«, tÄpÄc to darbÄ«bai ir nepiecieÅ”ams noteikts resursu daudzums. Un tajÄ paÅ”Ä laikÄ tie var pÄrklÄties ar klientu pieprasÄ«jumu resursiem, tÄpÄc mantkÄrÄ«gi fona procesi var tieÅ”i ietekmÄt klientu pieprasÄ«jumu izpildi. TÄpÄc arÄ« tie ir jÄuzrauga un jÄseko lÄ«dzi, lai nebÅ«tu nekÄdu traucÄjumu fona procesos.
Un tas viss datu bÄzes uzraudzÄ«bas ziÅÄ paliek sistÄmas metrikÄ. TaÄu, Åemot vÄrÄ, ka lielÄkÄ daļa mÅ«su infrastruktÅ«ras tiek pÄrvietota uz mÄkoÅiem, atseviŔķa resursdatora sistÄmas rÄdÄ«tÄji vienmÄr izgaist fonÄ. Bet datu bÄzÄs tie joprojÄm ir aktuÄli, un, protams, ir arÄ« jÄuzrauga sistÄmas rÄdÄ«tÄji.
Ar sistÄmas metriku viss ir vairÄk vai mazÄk kÄrtÄ«bÄ, visas mÅ«sdienu uzraudzÄ«bas sistÄmas jau atbalsta Å”os rÄdÄ«tÄjus, bet kopumÄ ar dažiem komponentiem joprojÄm nepietiek un dažas lietas ir jÄpievieno. PieskarÅ”os arÄ« tiem, par tiem bÅ«s vairÄki slaidi.
Pirmais plÄna punkts ir pieejamÄ«ba. Kas ir pieejamÄ«ba? PieejamÄ«ba manÄ izpratnÄ ir bÄzes spÄja apkalpot savienojumus, t.i., bÄze ir pacelta, tÄ kÄ pakalpojums pieÅem pieslÄgumus no klientiem. Un Å”o pieejamÄ«bu var novÄrtÄt pÄc noteiktiem raksturlielumiem. Å os raksturlielumus ir ļoti Ärti parÄdÄ«t informÄcijas paneļos.
Ikviens zina, kas ir informÄcijas paneļi. Tas ir tad, kad vienu reizi apskatÄ«jÄt ekrÄnu, kurÄ ir apkopota nepiecieÅ”amÄ informÄcija. Un jÅ«s varat uzreiz noteikt, vai datu bÄzÄ ir problÄma vai nÄ.
AttiecÄ«gi informÄcijas paneļos vienmÄr ir jÄparÄda datu bÄzes pieejamÄ«ba un citi galvenie raksturlielumi, lai Ŕī informÄcija bÅ«tu jums vienmÄr pieejama un pieejama. Dažas papildu detaļas, kas jau palÄ«dz incidentu izmeklÄÅ”anÄ, izmeklÄjot dažas ÄrkÄrtas situÄcijas, tÄs jau ir jÄievieto sekundÄrajos informÄcijas paneļos vai jÄpaslÄpj detalizÄtajÄs saitÄs, kas ved uz treÅ”o puÅ”u uzraudzÄ«bas sistÄmÄm.
Vienas labi zinÄmas uzraudzÄ«bas sistÄmas piemÄrs. Å Ä« ir ļoti forÅ”a uzraudzÄ«bas sistÄma. ViÅa vÄc daudz datu, taÄu no mana viedokļa viÅai ir dÄ«vains informÄcijas paneļu jÄdziens. Ir saite uz "izveidot informÄcijas paneli". Bet, veidojot informÄcijas paneli, tiek izveidots divu kolonnu saraksts, grafiku saraksts. Un, kad vajag kaut ko apskatÄ«t, sÄc klikŔķinÄt ar peli, ritinÄt, meklÄt vajadzÄ«go diagrammu. Un tas prasa laiku, t.i., nav informÄcijas paneļu kÄ tÄdu. Ir tikai diagrammu saraksti.
Kas jums jÄpievieno Å”iem informÄcijas paneļiem? Varat sÄkt ar tÄdu raksturlielumu kÄ reakcijas laiks. PostgreSQL ir pg_stat_statements skats. PÄc noklusÄjuma tas ir atspÄjots, taÄu tas ir viens no svarÄ«gajiem sistÄmas skatiem, kas vienmÄr ir jÄiespÄjo un jÄizmanto. Tas saglabÄ informÄciju par visiem esoÅ”ajiem vaicÄjumiem, kas ir izpildÄ«ti datu bÄzÄ.
AttiecÄ«gi mÄs varam sÄkt no tÄ, ka mÄs varam Åemt visu pieprasÄ«jumu kopÄjo izpildes laiku un dalÄ«t to ar pieprasÄ«jumu skaitu, izmantojot iepriekÅ” minÄtos laukus. Bet tÄda ir vidÄjÄ temperatÅ«ra slimnÄ«cÄ. Varam sÄkt no citiem laukiem ā minimÄlais vaicÄjuma izpildes laiks, maksimÄlais un mediÄna. Un mÄs pat varam izveidot procentiles; PostgreSQL Å”im nolÅ«kam ir atbilstoÅ”as āāfunkcijas. Un mÄs varam iegÅ«t dažus skaitļus, kas raksturo mÅ«su datubÄzes atbildes laiku jau izpildÄ«tiem pieprasÄ«jumiem, t.i., mÄs neizpildÄm viltus pieprasÄ«jumu 'izvÄlÄties 1' un neskatÄmies atbildes laiku, bet mÄs analizÄjam atbildes laiku jau izpildÄ«tiem pieprasÄ«jumiem un izlozÄjam vai nu atseviŔķu figÅ«ru, vai arÄ« veidojam grafiku, pamatojoties uz to.
Ir arÄ« svarÄ«gi uzraudzÄ«t sistÄmas paÅ”laik Ä£enerÄto kļūdu skaitu. Un Å”im nolÅ«kam varat izmantot pg_stat_database skatu. MÄs koncentrÄjamies uz lauku xact_rollback. Å ajÄ laukÄ tiek parÄdÄ«ts ne tikai datubÄzÄ notikuÅ”o atcelÅ”anas gadÄ«jumu skaits, bet arÄ« tiek Åemts vÄrÄ kļūdu skaits. RelatÄ«vi runÄjot, mÄs varam parÄdÄ«t Å”o skaitli mÅ«su informÄcijas panelÄ« un redzÄt, cik daudz kļūdu mums paÅ”laik ir. Ja kļūdu ir daudz, tas ir labs iemesls, lai izpÄtÄ«tu žurnÄlus un noskaidrotu, kÄda veida kļūdas tÄs ir un kÄpÄc tÄs rodas, un pÄc tam ieguldÄ«t un atrisinÄt tÄs.
Varat pievienot tÄdu lietu kÄ tahometrs. Tie ir darÄ«jumu skaits sekundÄ un pieprasÄ«jumu skaits sekundÄ. NosacÄ«ti runÄjot, varat izmantot Å”os skaitļus kÄ savas datubÄzes paÅ”reizÄjo veiktspÄju un novÄrot, vai ir pieprasÄ«jumu maksimumi, darÄ«jumu maksimumi vai, gluži pretÄji, vai datu bÄze ir nepietiekami noslogota, jo kÄda aizmugursistÄma ir neizdevusies. Ir svarÄ«gi vienmÄr skatÄ«ties uz Å”o skaitli un atcerÄties, ka mÅ«su projektam Å”Äda veida veiktspÄja ir normÄla, taÄu vÄrtÄ«bas virs un zemÄk jau ir kaut kÄdas problemÄtiskas un nesaprotamas, kas nozÄ«mÄ, ka mums ir jÄskatÄs, kÄpÄc Å”ie skaitļi ir tik augstu.
Lai novÄrtÄtu darÄ«jumu skaitu, mÄs atkal varam atsaukties uz pg_stat_database skatu. MÄs varam pievienot apÅemÅ”anos skaitu un atcelÅ”anu skaitu un iegÅ«t darÄ«jumu skaitu sekundÄ.
Vai visi saprot, ka vienÄ darÄ«jumÄ var ietilpt vairÄki pieprasÄ«jumi? TÄpÄc TPS un QPS nedaudz atŔķiras.
PieprasÄ«jumu skaitu sekundÄ var iegÅ«t no pg_stat_statements un vienkÄrÅ”i aprÄÄ·inÄt visu izpildÄ«to pieprasÄ«jumu summu. Ir skaidrs, ka mÄs salÄ«dzinÄm paÅ”reizÄjo vÄrtÄ«bu ar iepriekÅ”Äjo, atÅemam to, iegÅ«stam delta un iegÅ«stam daudzumu.
Ja vÄlaties, varat pievienot papildu rÄdÄ«tÄjus, kas arÄ« palÄ«dz novÄrtÄt mÅ«su datu bÄzes pieejamÄ«bu un pÄrraudzÄ«t, vai nav bijuÅ”as dÄ«kstÄves.
Viens no Å”iem rÄdÄ«tÄjiem ir darbspÄjas laiks. TaÄu PostgreSQL darbspÄjas laiks ir nedaudz grÅ«ts. Es jums pastÄstÄ«Å”u, kÄpÄc. Kad PostgreSQL ir palaists, darbspÄjas laiks sÄk ziÅot. Bet, ja kÄdÄ brÄ«dÄ«, piemÄram, kÄds uzdevums darbojÄs naktÄ«, atnÄca OOM-killer un piespiedu kÄrtÄ pÄrtrauca PostgreSQL bÄrnprocesu, tad Å”ajÄ gadÄ«jumÄ PostgreSQL pÄrtrauc visu klientu savienojumu, atiestata Ŕķelto atmiÅas apgabalu un sÄk atkopÅ”anu no pÄdÄjais kontrolpunkts. Un, kamÄr Ŕī atkopÅ”anÄs no kontrolpunkta ilgst, datu bÄze savienojumus nepieÅem, t.i., Ŕī situÄcija ir vÄrtÄjama kÄ dÄ«kstÄve. Bet darbÄ«bas laika skaitÄ«tÄjs netiks atiestatÄ«ts, jo tas Åem vÄrÄ postmaster palaiÅ”anas laiku no paÅ”a pirmÄ brīža. TÄpÄc Å”Ädas situÄcijas var izlaist.
Jums arÄ« jÄuzrauga vakuuma darbinieku skaits. Vai visi zina, kas ir autovakuums programmÄ PostgreSQL? Å Ä« ir interesanta PostgreSQL apakÅ”sistÄma. Par viÅu ir rakstÄ«ti daudzi raksti, tapuÅ”i daudzi ziÅojumi. Ir daudz diskusiju par vakuumu un to, kÄ tam vajadzÄtu darboties. Daudzi to uzskata par nepiecieÅ”amu ļaunumu. Bet tÄ tas ir. Å is ir sava veida atkritumu savÄcÄja analogs, kas attÄ«ra novecojuÅ”as rindu versijas, kuras nav vajadzÄ«gas nevienam darÄ«jumam, un atbrÄ«vo vietu tabulÄs un indeksos jaunÄm rindÄm.
KÄpÄc jums tas jÄuzrauga? Jo vakuums dažreiz ļoti sÄp. Tas patÄrÄ lielu daudzumu resursu, un rezultÄtÄ sÄk ciest klientu pieprasÄ«jumi.
Un tas jÄuzrauga caur pg_stat_activity skatu, par kuru es runÄÅ”u nÄkamajÄ sadaļÄ. Å is skats parÄda paÅ”reizÄjo darbÄ«bu datu bÄzÄ. Izmantojot Å”o darbÄ«bu, mÄs varam izsekot paÅ”laik strÄdÄjoÅ”o putekļu sÅ«cÄju skaitam. MÄs varam izsekot vakuumiem un redzÄt, ka, ja esam pÄrsnieguÅ”i limitu, tad tas ir iemesls ieskatÄ«ties PostgreSQL iestatÄ«jumos un kaut kÄ optimizÄt vakuuma darbÄ«bu.
VÄl viena lieta saistÄ«bÄ ar PostgreSQL ir tÄda, ka PostgreSQL ir ļoti slims ar garÄm transakcijÄm. ÄŖpaÅ”i no darÄ«jumiem, kas ilgi klÄ«st un neko nedara. Tas ir tÄ sauktais stat dÄ«kstÄves darÄ«jums. Å Äds darÄ«jums notur slÄdzenes un neļauj vakuumam darboties. Un tÄ rezultÄtÄ galdi uzbriest un palielinÄs. Un vaicÄjumi, kas darbojas ar Ŕīm tabulÄm, sÄk darboties lÄnÄk, jo jums ir jÄsavÄc visas vecÄs rindu versijas no atmiÅas uz disku un atpakaļ. TÄpÄc ir jÄuzrauga arÄ« laiks, ilgÄko darÄ«jumu ilgums, visilgÄkie vakuuma pieprasÄ«jumi. Un, ja mÄs redzam dažus procesus, kas darbojas ļoti ilgu laiku, jau vairÄk nekÄ 10-20-30 minÅ«tes OLTP slodzei, tad mums ir jÄpievÄrÅ” tiem uzmanÄ«ba un jÄpiespiež tie jÄpÄrtrauc vai jÄoptimizÄ lietojumprogramma, lai tie netiek saukti un tik ilgi nekarÄjas. AnalÄ«tiskajai slodzei 10-20-30 minÅ«tes ir normÄlas, ir arÄ« garÄkas.
TÄlÄk mums ir iespÄja ar savienotiem klientiem. Kad esam jau izveidojuÅ”i informÄcijas paneli un ievietojuÅ”i tajÄ galvenos pieejamÄ«bas rÄdÄ«tÄjus, varam tajÄ pievienot arÄ« papildu informÄciju par saistÄ«tajiem klientiem.
InformÄcija par savienotajiem klientiem ir svarÄ«ga, jo no PostgreSQL viedokļa klienti ir atŔķirÄ«gi. Ir labi klienti un ir slikti klienti.
VienkÄrÅ”s piemÄrs. PÄc klienta vÄrdiem es saprotu pieteikumu. Lietojumprogramma ir izveidojusi savienojumu ar datu bÄzi un nekavÄjoties sÄk sÅ«tÄ«t uz turieni savus pieprasÄ«jumus, datu bÄze tos apstrÄdÄ un izpilda, un rezultÄtus atgriež klientam. Tie ir labi un pareizi klienti.
Ir situÄcijas, kad klients ir pieslÄdzies, tas notur savienojumu, bet neko nedara. Tas ir dÄ«kstÄves stÄvoklÄ«.
Bet ir slikti klienti. PiemÄram, tas pats klients pieslÄdzÄs, atvÄra darÄ«jumu, izdarÄ«ja kaut ko datu bÄzÄ un pÄc tam iegÄja kodÄ, piemÄram, lai piekļūtu ÄrÄjam avotam vai apstrÄdÄtu tur saÅemtos datus. Bet viÅÅ” darÄ«jumu nenoslÄdza. Un darÄ«jums karÄjas datu bÄzÄ un tiek turÄts lÄ«nijas slÄdzenÄ. Tas ir slikts stÄvoklis. Un, ja pÄkÅ”Åi kÄda lietojumprogramma kaut kur sevÄ« neizdodas ar izÅÄmumu, tad darÄ«jums var palikt atvÄrts ļoti ilgu laiku. Un tas tieÅ”i ietekmÄ PostgreSQL veiktspÄju. PostgreSQL bÅ«s lÄnÄks. TÄpÄc ir svarÄ«gi Å”Ädus klientus savlaicÄ«gi izsekot un piespiedu kÄrtÄ pÄrtraukt viÅu darbu. Un jums ir jÄoptimizÄ sava lietojumprogramma, lai Å”Ädas situÄcijas nerastos.
Citi slikti klienti gaida klientus. Bet viÅi kļūst slikti apstÄkļu dÄļ. PiemÄram, vienkÄrÅ”s dÄ«kstÄves darÄ«jums: tas var atvÄrt darÄ«jumu, bloÄ·Ät dažas rindas, tad kaut kur kodÄ tas neizdosies, atstÄjot karÄjoÅ”u darÄ«jumu. Cits klients atnÄks un pieprasÄ«s tos paÅ”us datus, taÄu viÅÅ” saskarsies ar bloÄ·ÄÅ”anu, jo Å”ajÄ pakarinÄtajÄ darÄ«jumÄ jau ir bloÄ·Äjumi dažÄs nepiecieÅ”amajÄs rindÄs. Un otrais darÄ«jums turpinÄsies, gaidot, kad pirmais darÄ«jums tiks pabeigts vai administrators to piespiedu kÄrtÄ aizvÄrs. TÄpÄc neapstiprinÄtie darÄ«jumi var uzkrÄties un aizpildÄ«t datu bÄzes savienojuma ierobežojumu. Un, kad limits ir pilns, lietojumprogramma vairs nevar strÄdÄt ar datu bÄzi. TÄ jau ir projekta ÄrkÄrtas situÄcija. TÄpÄc sliktie klienti ir jÄseko lÄ«dzi un uz tiem ir jÄreaÄ£Ä savlaicÄ«gi.
VÄl viens uzraudzÄ«bas piemÄrs. Un Å”eit jau ir pienÄcÄ«gs informÄcijas panelis. IepriekÅ” ir informÄcija par savienojumiem. DB pieslÄgums ā 8gab. Un viss. Mums nav informÄcijas par to, kuri klienti ir aktÄ«vi, kuri ir tikai dÄ«kÄ, neko nedarot. Nav informÄcijas par nepabeigtajiem darÄ«jumiem un neapstiprinÄtajiem savienojumiem, t.i., Å”is ir skaitlis, kas parÄda savienojumu skaitu, un tas arÄ« viss. Un tad uzminiet paÅ”i.
AttiecÄ«gi, lai pievienotu Å”o informÄciju uzraudzÄ«bai, jums ir jÄpiekļūst pg_stat_activity sistÄmas skatam. Ja jÅ«s pavadÄt daudz laika PostgreSQL, tad Å”is ir ļoti labs skats, kam vajadzÄtu kļūt par jÅ«su draugu, jo tas parÄda paÅ”reizÄjo darbÄ«bu PostgreSQL, t.i., kas tajÄ notiek. Katram procesam ir atseviŔķa rindiÅa, kas parÄda informÄciju par Å”o procesu: no kura resursdatora tika izveidots savienojums, ar kÄdu lietotÄju, ar kÄdu vÄrdu, kad transakcija tika sÄkta, kÄds pieprasÄ«jums paÅ”laik tiek izpildÄ«ts, kÄds pieprasÄ«jums tika izpildÄ«ts pÄdÄjo reizi. Un attiecÄ«gi varam novÄrtÄt klienta stÄvokli, izmantojot stat lauku. RelatÄ«vi runÄjot, mÄs varam grupÄt pÄc Ŕī lauka un iegÅ«t to statistiku, kas paÅ”laik ir datu bÄzÄ, un savienojumu skaitu, kuriem Ŕī statistika ir datu bÄzÄ. Un jau saÅemtos skaitļus varam nosÅ«tÄ«t uz mÅ«su monitoringu un pÄc tiem uzzÄ«mÄt grafikus.
SvarÄ«gi ir arÄ« izvÄrtÄt darÄ«juma ilgumu. Jau teicu, ka svarÄ«gi ir izvÄrtÄt vakuumu ilgumu, bet darÄ«jumus vÄrtÄ tÄpat. Ir lauki xact_start un query_start. Tie, nosacÄ«ti runÄjot, parÄda darÄ«juma sÄkuma laiku un pieprasÄ«juma sÄkuma laiku. MÄs Åemam funkciju now(), kas parÄda paÅ”reizÄjo laikspiedolu, un atÅemam darÄ«jumu un pieprasÄm laikspiedolu. Un mÄs iegÅ«stam darÄ«juma ilgumu, pieprasÄ«juma ilgumu.
Ja mÄs redzam ilgus darÄ«jumus, mums tie jau jÄpabeidz. OLTP slodzei ilgi darÄ«jumi jau ir vairÄk nekÄ 1-2-3 minÅ«tes. OLAP darba slodzei ilgstoÅ”as āātransakcijas ir normÄla parÄdÄ«ba, taÄu, ja to pabeigÅ”ana prasa vairÄk nekÄ divas stundas, tas arÄ« liecina, ka mums kaut kur ir Ŕķībs.
Kad klienti ir izveidojuÅ”i savienojumu ar datu bÄzi, viÅi sÄk strÄdÄt ar mÅ«su datiem. ViÅi piekļūst tabulÄm, viÅi piekļūst indeksiem, lai iegÅ«tu datus no tabulas. Un ir svarÄ«gi novÄrtÄt, kÄ klienti mijiedarbojas ar Å”iem datiem.
Tas ir nepiecieÅ”ams, lai novÄrtÄtu mÅ«su darba slodzi un aptuveni saprastu, kuras tabulas mums ir ākarstÄkÄsā. PiemÄram, tas ir nepiecieÅ”ams situÄcijÄs, kad mÄs vÄlamies novietot ākarstÄsā tabulas uz kÄda veida Ätras SSD atmiÅas. PiemÄram, dažas sen neizmantotas arhÄ«va tabulas var pÄrvietot uz kaut kÄdu āaukstoā arhÄ«vu, uz SATA diskdziÅiem un ļaut viÅiem tur dzÄ«vot, tÄm piekļūs pÄc vajadzÄ«bas.
Tas ir noderÄ«gi arÄ«, lai noteiktu anomÄlijas pÄc izlaidumiem un izvietoÅ”anas. PieÅemsim, ka projekts ir izlaidis kÄdu jaunu funkciju. PiemÄram, mÄs pievienojÄm jaunu funkcionalitÄti darbam ar datu bÄzi. Un, ja mÄs uzzÄ«mÄjam tabulu lietojuma grafikus, mÄs varam viegli noteikt Ŕīs anomÄlijas Å”ajos grafikos. PiemÄram, atjauniniet sÄrijveidu vai dzÄsiet sÄrijas. Tas bÅ«s ļoti redzams.
Varat arÄ« atklÄt anomÄlijas āpeldoÅ”ajÄā statistikÄ. Ko tas nozÄ«mÄ? PostgreSQL ir ļoti spÄcÄ«gs un ļoti labs vaicÄjumu plÄnotÄjs. Un izstrÄdÄtÄji velta daudz laika tÄ izstrÄdei. KÄ viÅÅ” strÄdÄ? Lai izveidotu labus plÄnus, PostgreSQL apkopo statistiku par datu sadalÄ«jumu tabulÄs noteiktÄ laika intervÄlÄ un ar noteiktu biežumu. Å Ä«s ir visizplatÄ«tÄkÄs vÄrtÄ«bas: unikÄlo vÄrtÄ«bu skaits, informÄcija par NULL tabulÄ, daudz informÄcijas.
Pamatojoties uz Å”o statistiku, plÄnotÄjs konstruÄ vairÄkus vaicÄjumus, izvÄlas optimÄlÄko un izmanto Å”o vaicÄjumu plÄnu, lai izpildÄ«tu paÅ”u vaicÄjumu un atgrieztu datus.
Un gadÄs, ka statistika āuzpeldā. KvalitÄtes un kvantitÄtes dati tabulÄ kaut kÄ mainÄ«jÄs, bet statistika netika apkopota. Un izveidotie plÄni var nebÅ«t optimÄli. Un, ja mÅ«su plÄni izrÄdÄ«sies neoptimÄli, pamatojoties uz savÄkto monitoringu, pamatojoties uz tabulÄm, mÄs varÄsim redzÄt Ŕīs anomÄlijas. PiemÄram, kaut kur dati mainÄ«jÄs kvalitatÄ«vi un indeksa vietÄ sÄka izmantot secÄ«gu izeju caur tabulu, t.i. ja vaicÄjumam ir jÄatgriež tikai 100 rindas (ir ierobežojums 100), tad Å”im vaicÄjumam tiks veikta pilnÄ«ga meklÄÅ”ana. Un tas vienmÄr ļoti slikti ietekmÄ veiktspÄju.
Un mÄs to varam redzÄt monitoringÄ. Un jau apskatiet Å”o vaicÄjumu, palaidiet paskaidrojumu, apkopojiet statistiku, izveidojiet jaunu papildu indeksu. Un jau reaÄ£Ä uz Å”o problÄmu. TÄpÄc tas ir svarÄ«gi.
VÄl viens uzraudzÄ«bas piemÄrs. DomÄju, ka daudzi viÅu atpazina, jo viÅÅ” ir ļoti populÄrs. Kas to izmanto savos projektos
Ir vairÄki grafiki. Un baiti ir norÄdÄ«ti kÄ vienotÄ«ba, t.i., ir 5 grafiki. Tie ir datu ievietoÅ”ana, datu atjauninÄÅ”ana, datu dzÄÅ”ana, datu iegÅ«Å”ana un datu atgrieÅ”ana. MÄrvienÄ«ba ir baiti. Bet lieta ir tÄda, ka PostgreSQL statistika atgriež datus korejÄ (rindÄs). Un attiecÄ«gi Å”ie grafiki ir ļoti labs veids, kÄ vairÄkas reizes, desmitiem reižu nenovÄrtÄt savu darba slodzi, jo kortežs nav baits, kortežs ir virkne, tas ir daudz baitu un vienmÄr ir mainÄ«ga garuma. Tas ir, darba slodzes aprÄÄ·inÄÅ”ana baitos, izmantojot koreÅ”us, ir nereÄls vai ļoti grÅ«ts uzdevums. TÄpÄc, izmantojot informÄcijas paneli vai iebÅ«vÄto uzraudzÄ«bu, vienmÄr ir svarÄ«gi saprast, ka tas darbojas pareizi un atgriež jums pareizi novÄrtÄtus datus.
KÄ iegÅ«t statistiku par Ŕīm tabulÄm? Å im nolÅ«kam PostgreSQL ir noteikta uzskatu saime. Un galvenais skats ir
Izmantojot iepriekÅ” minÄtos laukus, varat novÄrtÄt ievietoÅ”anas, atjauninÄjumu un dzÄÅ”anas skaitu. Manis izmantotÄ informÄcijas paneļa piemÄrÄ Å”ie lauki tiek izmantoti, lai novÄrtÄtu darba slodzes raksturlielumus. TÄpÄc mÄs varam arÄ« uz tiem balstÄ«ties. Bet ir vÄrts atcerÄties, ka tie ir korteži, nevis baiti, tÄpÄc mÄs nevaram to darÄ«t tikai baitos.
Balstoties uz Å”iem datiem, mÄs varam izveidot tÄ sauktÄs TopN tabulas. PiemÄram, Top-5, Top-10. Un jÅ«s varat izsekot tiem karstajiem galdiem, kas tiek pÄrstrÄdÄti vairÄk nekÄ citi. PiemÄram, 5 ākarstÄsā tabulas ievietoÅ”anai. Izmantojot Ŕīs TopN tabulas, mÄs novÄrtÄjam savu darba slodzi un varam novÄrtÄt darba slodzes uzliesmojumus pÄc izlaidumiem, atjauninÄjumiem un izvietoÅ”anas.
SvarÄ«gi ir arÄ« novÄrtÄt tabulas lielumu, jo dažreiz izstrÄdÄtÄji ievieÅ” jaunu funkciju, un mÅ«su tabulas sÄk uzbriest lielos izmÄros, jo viÅi nolÄma pievienot papildu datu apjomu, bet neparedzÄja, kÄ tas notiks. ietekmÄt datu bÄzes lielumu. Å Ädi gadÄ«jumi arÄ« mums ir pÄrsteigumi.
Un tagad neliels jautÄjums jums. KÄds jautÄjums rodas, pamanot datu bÄzes servera slodzi? KÄds jums ir nÄkamais jautÄjums?
Bet patiesÄ«bÄ jautÄjums rodas Å”Ädi. KÄdus pieprasÄ«jumus izraisa slodze? Tas ir, nav interesanti skatÄ«ties uz procesiem, ko izraisa slodze. Skaidrs, ka ja saimniekam ir datu bÄze, tad datubÄze tur darbojas un skaidrs, ka tur tiks iznÄ«cinÄtas tikai datu bÄzes. Ja mÄs atveram Top, mÄs redzÄsim PostgreSQL procesu sarakstu, kas kaut ko dara. No Top nebÅ«s skaidrs, ko viÅi dara.
AttiecÄ«gi ir jÄatrod tie vaicÄjumi, kas rada vislielÄko slodzi, jo skaÅoÅ”anas vaicÄjumi, kÄ likums, dod lielÄku peļÅu nekÄ PostgreSQL vai operÄtÄjsistÄmas konfigurÄcijas noregulÄÅ”ana vai pat aparatÅ«ras noregulÄÅ”ana. PÄc manÄm aplÄsÄm, tas ir aptuveni 80-85-90%. Un tas tiek darÄ«ts daudz ÄtrÄk. ÄtrÄk ir labot pieprasÄ«jumu nekÄ labot konfigurÄciju, ieplÄnot restartÄÅ”anu, it Ä«paÅ”i, ja datu bÄzi nevar restartÄt, vai pievienot aparatÅ«ru. VienkÄrÅ”Äk ir kaut kur pÄrrakstÄ«t vaicÄjumu vai pievienot indeksu, lai iegÅ«tu labÄku Ŕī vaicÄjuma rezultÄtu.
AttiecÄ«gi ir jÄuzrauga pieprasÄ«jumi un to atbilstÄ«ba. Å
emsim vÄl vienu uzraudzÄ«bas piemÄru. Un arÄ« Å”eit, Ŕķiet, ir lieliska uzraudzÄ«ba. Ir informÄcija par replikÄciju, ir informÄcija par caurlaidspÄju, bloÄ·ÄÅ”anu, resursu izmantoÅ”anu. Viss ir kÄrtÄ«bÄ, bet nav informÄcijas par pieprasÄ«jumiem. Nav skaidrs, kÄdi vaicÄjumi darbojas mÅ«su datubÄzÄ, cik ilgi tie darbojas, cik no Å”iem vaicÄjumiem ir. Mums vienmÄr ir jÄbÅ«t Å”ai informÄcijai mÅ«su uzraudzÄ«bÄ.
Un, lai iegÅ«tu Å”o informÄciju, mÄs varam izmantot moduli pg_stat_statements. Pamatojoties uz to, jÅ«s varat izveidot dažÄdus grafikus. PiemÄram, jÅ«s varat iegÅ«t informÄciju par visbiežÄk veiktajiem vaicÄjumiem, tas ir, par tiem vaicÄjumiem, kas tiek izpildÄ«ti visbiežÄk. JÄ, pÄc izvietoÅ”anas ir arÄ« ļoti noderÄ«gi to aplÅ«kot un saprast, vai ir kÄds pieprasÄ«jumu pieaugums.
Varat pÄrraudzÄ«t garÄkos vaicÄjumus, tas ir, tos vaicÄjumus, kuru aizpildÄ«Å”ana prasa visilgÄk. Tie darbojas ar procesoru, tie patÄrÄ I/O. MÄs to varam arÄ« novÄrtÄt, izmantojot laukus total_time, mean_time, blk_write_time un blk_read_time.
MÄs varam novÄrtÄt un uzraudzÄ«t smagÄkos pieprasÄ«jumus resursu izmantoÅ”anas ziÅÄ, tos, kas lasa no diska, kas darbojas ar atmiÅu vai, gluži pretÄji, rada kÄdu rakstÄ«Å”anas slodzi.
Varam izvÄrtÄt dÄsnÄkos lÅ«gumus. Å ie ir vaicÄjumi, kas atgriež lielu skaitu rindu. PiemÄram, tas varÄtu bÅ«t kÄds pieprasÄ«jums, kurÄ viÅi ir aizmirsuÅ”i iestatÄ«t ierobežojumu. Un tas vienkÄrÅ”i atgriež visu tabulas saturu vai vaicÄjumu pÄri vaicÄtajÄm tabulÄm.
Varat arÄ« pÄrraudzÄ«t vaicÄjumus, kuros tiek izmantoti pagaidu faili vai pagaidu tabulas.
Un mums joprojÄm ir fona procesi. Fona procesi galvenokÄrt ir kontrolpunkti vai arÄ« tos sauc par kontrolpunktiem, tie ir autovakuums un replikÄcija.
VÄl viens uzraudzÄ«bas piemÄrs. KreisajÄ pusÄ ir cilne Apkope, dodieties uz to un ceriet ieraudzÄ«t kaut ko noderÄ«gu. Bet Å”eit ir tikai vakuuma darbÄ«bas un statistikas vÄkÅ”anas laiks, nekas vairÄk. Å Ä« ir ļoti slikta informÄcija, tÄpÄc mums vienmÄr ir jÄbÅ«t informÄcijai par to, kÄ mÅ«su datubÄzÄ darbojas fona procesi un vai to darbÄ nav raduÅ”Äs problÄmas.
AplÅ«kojot kontrolpunktus, mums jÄatceras, ka kontrolpunkti izskalo netÄ«rÄs lapas no Ŕķelto atmiÅas apgabala diskÄ, pÄc tam izveido kontrolpunktu. Un Å”o kontrolpunktu var izmantot kÄ atkopÅ”anas vietu, ja PostgreSQL pÄkÅ”Åi tika pÄrtraukts ÄrkÄrtas situÄcijÄ.
AttiecÄ«gi, lai visas ānetÄ«rÄsā lapas izskalotu diskÄ, jums ir jÄveic noteikts rakstÄ«Å”anas apjoms. Un, kÄ likums, sistÄmÄs ar lielu atmiÅas apjomu tas ir daudz. Un, ja mÄs ļoti bieži veicam kontrolpunktus Ä«sÄ intervÄlÄ, diska veiktspÄja ļoti ievÄrojami samazinÄsies. Un klientu pieprasÄ«jumi cietÄ«s no resursu trÅ«kuma. ViÅi sacentÄ«sies par resursiem un trÅ«ks produktivitÄtes.
AttiecÄ«gi, izmantojot pg_stat_bgwriter, izmantojot norÄdÄ«tos laukus, mÄs varam uzraudzÄ«t notiekoÅ”o kontrolpunktu skaitu. Un, ja mums ir daudz kontrolpunktu noteiktÄ laika periodÄ (10-15-20 minÅ«tÄs, pusstundÄ), piemÄram, 3-4-5, tad tÄ jau var bÅ«t problÄma. Un jau vajag paskatÄ«ties datu bÄzÄ, paskatÄ«ties konfigurÄcijÄ, kas izraisa tÄdu kontrolpunktu pÄrpilnÄ«bu. VarbÅ«t notiek kÄds liels ieraksts. Noslodzi jau varam izvÄrtÄt, jo esam jau pievienojuÅ”i slodzes grafikus. MÄs jau varam pielÄgot kontrolpunkta parametrus un pÄrliecinÄties, ka tie bÅ«tiski neietekmÄ vaicÄjuma veiktspÄju.
Es atkal atgriežos pie autovakuuma, jo, kÄ jau teicu, tÄ ir tÄda lieta, kas var viegli saskaitÄ«t gan diska, gan vaicÄjuma veiktspÄju, tÄpÄc vienmÄr ir svarÄ«gi novÄrtÄt autovakuuma daudzumu.
Autovakuuma darbinieku skaits datu bÄzÄ ir ierobežots. PÄc noklusÄjuma tie ir trÄ«s, tÄpÄc, ja datu bÄzÄ vienmÄr strÄdÄ trÄ«s darbinieki, tas nozÄ«mÄ, ka mÅ«su autovakuums nav konfigurÄts, mums ir jÄpalielina ierobežojumi, jÄpÄrskata autovakuuma iestatÄ«jumi un jÄiekļūst konfigurÄcijÄ.
Ir svarÄ«gi izvÄrtÄt, kÄdi vakuuma darbinieki mums ir. Vai nu tas tika palaists no lietotÄja, atnÄca DBA un manuÄli palaida kaut kÄdu vakuumu, un tas radÄ«ja slodzi. Mums ir sava veida problÄma. Vai arÄ« tas ir vakuumu skaits, kas atskrÅ«vÄ darÄ«jumu skaitÄ«tÄju. DažÄm PostgreSQL versijÄm tie ir ļoti smagi vakuumi. ViÅi var viegli saskaitÄ«t veiktspÄju, jo viÅi lasa visu tabulu, skenÄ visus blokus Å”ajÄ tabulÄ.
Un, protams, vakuuma ilgums. Ja mums ir ilgstoÅ”i putekļsÅ«cÄji, kas darbojas ļoti ilgu laiku, tas nozÄ«mÄ, ka mums atkal ir jÄpievÄrÅ” uzmanÄ«ba vakuuma konfigurÄcijai un, iespÄjams, jÄpÄrskata tÄ iestatÄ«jumi. Jo var rasties situÄcija, kad vakuums uz galda strÄdÄ ilgstoÅ”i (3-4 stundas), bet laikÄ, kad darbojÄs vakuums, tabulÄ atkal izdevÄs uzkrÄties liels daudzums miruÅ”o rindu. Un, tiklÄ«dz vakuums ir pabeigts, viÅam atkal ir jÄizsÅ«c Å”is galds. Un mÄs nonÄkam pie situÄcijas ā bezgalÄ«gÄ vakuumÄ. Un Å”ajÄ gadÄ«jumÄ vakuums netiek galÄ ar savu darbu, un tabulas pamazÄm sÄk uzbriest, lai gan noderÄ«go datu apjoms tajÄ paliek nemainÄ«gs. TÄpÄc ilgstoÅ”os vakuumos vienmÄr skatÄmies uz konfigurÄciju un cenÅ”amies to optimizÄt, bet tajÄ paÅ”Ä laikÄ, lai neciestu klientu pieprasÄ«jumu izpilde.
MÅ«sdienÄs praktiski nav nevienas PostgreSQL instalÄcijas, kurai nebÅ«tu straumÄÅ”anas replikÄcijas. ReplikÄcija ir datu pÄrvietoÅ”anas process no galvenÄ uz kopiju.
ReplikÄcija programmÄ PostgreSQL tiek veikta, izmantojot darÄ«jumu žurnÄlu. Vednis Ä£enerÄ darÄ«jumu žurnÄlu. DarÄ«jumu žurnÄls tiek pÄrsÅ«tÄ«ts pa tÄ«kla savienojumu uz repliku, un pÄc tam tas tiek reproducÄts replikÄ. Tas ir vienkÄrÅ”i.
AttiecÄ«gi pg_stat_replication skats tiek izmantots, lai pÄrraudzÄ«tu replikÄcijas kavÄÅ”anos. Bet ar viÅu ne viss ir vienkÄrÅ”i. 10. versijÄ skatÄ ir veiktas vairÄkas izmaiÅas. PirmkÄrt, daži lauki ir pÄrdÄvÄti. Un daži lauki ir pievienoti. 10. versijÄ tika parÄdÄ«ti lauki, kas ļauj novÄrtÄt replikÄcijas kavÄÅ”anos sekundÄs. Tas ir ļoti Ärti. Pirms 10. versijas bija iespÄjams novÄrtÄt replikÄcijas nobÄ«di baitos. Å Ä« opcija paliek 10. versijÄ, t.i., jÅ«s varat izvÄlÄties, kas jums ir ÄrtÄk - novÄrtÄt nobÄ«di baitos vai novÄrtÄt kavÄÅ”anos sekundÄs. Daudzi cilvÄki dara abus.
TomÄr, lai novÄrtÄtu replikÄcijas kavÄÅ”anos, jums jÄzina žurnÄla atraÅ”anÄs vieta darÄ«jumÄ. Un Ŕīs darÄ«jumu žurnÄla pozÄ«cijas ir tieÅ”i pg_stat_replication skatÄ. RelatÄ«vi runÄjot, mÄs varam Åemt divus punktus darÄ«jumu žurnÄlÄ, izmantojot funkciju pg_xlog_location_diff(). AprÄÄ·iniet delta starp tÄm un iegÅ«stiet replikÄcijas nobÄ«di baitos. Tas ir ļoti Ärti un vienkÄrÅ”i.
10. versijÄ Å”Ä« funkcija tika pÄrdÄvÄta par pg_wal_lsn_diff(). KopumÄ visÄs funkcijÄs, skatos un utilÄ«tprogrammÄs, kur parÄdÄ«jÄs vÄrds āxlogā, tas tika aizstÄts ar vÄrtÄ«bu āwalā. Tas attiecas gan uz skatiem, gan funkcijÄm. Tas ir tÄds jauninÄjums.
TurklÄt 10. versijÄ tika pievienotas rindas, kas Ä«paÅ”i parÄda kavÄÅ”anos. Tie ir rakstÄ«Å”anas aizkave, skaloÅ”anas aizkave, atkÄrtoÅ”anas aizkave. Tas ir, ir svarÄ«gi uzraudzÄ«t Ŕīs lietas. Ja mÄs redzam, ka mums ir replikÄcijas aizkave, mums ir jÄizpÄta, kÄpÄc tÄ parÄdÄ«jÄs, no kurienes tÄ radÄs, un jÄnovÄrÅ” problÄma.
Ar sistÄmas metriku gandrÄ«z viss ir kÄrtÄ«bÄ. Kad sÄkas jebkura uzraudzÄ«ba, tÄ sÄkas ar sistÄmas metriku. Tas ir procesoru, atmiÅas, mijmaiÅas, tÄ«kla un diska iznÄ«cinÄÅ”ana. TomÄr daudzi parametri pÄc noklusÄjuma nav pieejami.
Ja ar pÄrstrÄdes procesu viss ir kÄrtÄ«bÄ, tad ir problÄmas ar disku pÄrstrÄdi. Parasti uzraudzÄ«bas izstrÄdÄtÄji pievieno informÄciju par caurlaidspÄju. Tas var bÅ«t iops vai baitos. Bet viÅi aizmirst par latentumu un diska ierÄ«Äu izmantoÅ”anu. Å ie ir svarÄ«gÄki parametri, kas ļauj novÄrtÄt, cik noslogoti ir mÅ«su diski un cik tie ir lÄni. Ja mums ir augsts latentums, tas nozÄ«mÄ, ka ir dažas problÄmas ar diskiem. Ja mums ir augsta noslodze, tas nozÄ«mÄ, ka diski netiek galÄ. TÄs ir labÄkas Ä«paŔības nekÄ caurlaidspÄja.
TurklÄt Å”o statistiku var iegÅ«t arÄ« no /proc failu sistÄmas, kÄ tas tiek darÄ«ts pÄrstrÄdes procesoriem. Es nezinu, kÄpÄc Ŕī informÄcija netiek pievienota uzraudzÄ«bai. TomÄr ir svarÄ«gi, lai tas bÅ«tu jÅ«su uzraudzÄ«bÄ.
Tas pats attiecas uz tÄ«kla saskarnÄm. InformÄcija par tÄ«kla caurlaidspÄju ir paketÄs, baitos, bet tomÄr nav informÄcijas par latentumu un nav informÄcijas par izmantoÅ”anu, lai gan arÄ« Ŕī ir noderÄ«ga informÄcija.
Jebkurai uzraudzÄ«bai ir trÅ«kumi. Un neatkarÄ«gi no tÄ, kÄda veida uzraudzÄ«bu jÅ«s veicat, tas vienmÄr neatbildÄ«s dažiem kritÄrijiem. TomÄr tie attÄ«stÄs, tiek pievienotas jaunas funkcijas un jaunas lietas, tÄpÄc izvÄlieties kaut ko un pabeidziet to.
Un, lai pabeigtu, jums vienmÄr ir jÄbÅ«t priekÅ”statam par to, ko nozÄ«mÄ sniegtÄ statistika un kÄ jÅ«s varat to izmantot problÄmu risinÄÅ”anai.
Un daži galvenie punkti:
- Jums vienmÄr jÄuzrauga pieejamÄ«ba un jÄbÅ«t informÄcijas paneļiem, lai varÄtu Ätri novÄrtÄt, vai ar datu bÄzi viss ir kÄrtÄ«bÄ.
- Jums vienmÄr ir jÄbÅ«t priekÅ”statam par to, kÄdi klienti strÄdÄ ar jÅ«su datu bÄzi, lai atsijÄtu sliktos klientus un tos notriektu.
- Ir svarÄ«gi novÄrtÄt, kÄ Å”ie klienti strÄdÄ ar datiem. Jums ir jÄbÅ«t priekÅ”statam par savu darba slodzi.
- SvarÄ«gi izvÄrtÄt, kÄ Å”Ä« slodze veidojas, ar kÄdu vaicÄjumu palÄ«dzÄ«bu. JÅ«s varat novÄrtÄt vaicÄjumus, varat tos optimizÄt, pÄrveidot, veidot tiem indeksus. Tas ir ļoti svarÄ«gi.
- Fona procesi var negatÄ«vi ietekmÄt klientu pieprasÄ«jumus, tÄpÄc ir svarÄ«gi uzraudzÄ«t, lai viÅi neizmantotu pÄrÄk daudz resursu.
- SistÄmas metrika ļauj plÄnot serveru mÄrogoÅ”anas un jaudas palielinÄÅ”anas plÄnus, tÄpÄc ir svarÄ«gi arÄ« tos izsekot un novÄrtÄt.
Ja jÅ«s interesÄ Å”Ä« tÄma, varat sekot Ŕīm saitÄm.
PieprasÄ«juma piemÄri:
Å Ä« ir mÅ«su un mana korporatÄ«vÄ repozitorija. Tie satur vaicÄjumu piemÄrus. Tur nav vaicÄjumu no atlasÄ«tÄs* sÄrijas. Jau ir gatavi vaicÄjumi ar savienojumiem, izmantojot interesantas funkcijas, kas ļauj neapstrÄdÄtus skaitļus pÄrvÄrst par lasÄmÄm, ÄrtÄm vÄrtÄ«bÄm, t.i., tie ir baiti, laiks. Varat tos paÅemt, apskatÄ«t, analizÄt, pievienot savam monitoringam, izveidot uzraudzÄ«bu, pamatojoties uz tiem.
jautÄjumi
JautÄjums: JÅ«s teicÄt, ka nereklamÄsiet zÄ«molus, bet man joprojÄm ir interese - kÄdus informÄcijas paneļus izmantojat savos projektos?
Atbilde: Tas atŔķiras. GadÄs, ka nonÄkam pie klienta un viÅam jau ir savs monitorings. Un mÄs konsultÄjam klientu par to, kas jÄpievieno viÅa uzraudzÄ«bai. SliktÄkÄ situÄcija ir ar Zabbix. Jo tai nav iespÄju izveidot TopN grafikus. MÄs paÅ”i lietojam
JautÄjums: Vai ir kÄdi analogi AWR ziÅojumiem vai... apkopojumam? Vai jÅ«s zinÄt par kaut ko lÄ«dzÄ«gu?
Atbilde: JÄ, es zinu, kas ir AWR, tÄ ir forÅ”a lieta. Å obrÄ«d ir pieejami dažÄdi velosipÄdi, kas realizÄ aptuveni Å”Ädu modeli. Ar noteiktu laika intervÄlu dažas bÄzes lÄ«nijas tiek ierakstÄ«tas tajÄ paÅ”Ä PostgreSQL vai atseviÅ”Ä·Ä krÄtuvÄ. JÅ«s varat tos google meklÄt internetÄ, viÅi tur ir. Viens no Å”Ädas lietas izstrÄdÄtÄjiem sÄž sql.ru forumÄ PostgreSQL pavedienÄ. Tur jÅ«s varat viÅu noÄ·ert. JÄ, tÄdas lietas ir, tÄs var izmantot. Plus tajÄ
PS1 Ja izmantojat postgres_exporter, kÄdu informÄcijas paneli izmantojat? TÄdas ir vairÄkas. Tie jau ir novecojuÅ”i. VarbÅ«t kopiena izveidos atjauninÄtu veidni?
PS2 ir noÅemts pganalyze, jo tas ir patentÄts SaaS piedÄvÄjums, kas koncentrÄjas uz veiktspÄjas uzraudzÄ«bu un automatizÄtiem regulÄÅ”anas ieteikumiem.
AptaujÄ var piedalÄ«ties tikai reÄ£istrÄti lietotÄji.
Kuru paÅ”mitinÄtu postgresql uzraudzÄ«bu (ar informÄcijas paneli) uzskatÄt par labÄko?
-
30,0%Zabbix + papildinÄjumi no Alekseja Lesovska vai zabbix 4.4 vai libzbxpgsql + zabbix libzbxpgsql + zabbix3
-
0,0%https://github.com/lesovsky/pgcenter0
-
0,0%https://github.com/pg-monz/pg_monz0
-
20,0%https://github.com/cybertec-postgresql/pgwatch22
-
20,0%https://github.com/postgrespro/mamonsu2
-
0,0%https://www.percona.com/doc/percona-monitoring-and-management/conf-postgres.html0
-
10,0%pganalyze ir patentÄta SaaS ā es to nevaru izdzÄst1
-
10,0%https://github.com/powa-team/powa1
-
0,0%https://github.com/darold/pgbadger0
-
0,0%https://github.com/darold/pgcluu0
-
0,0%https://github.com/zalando/PGObserver0
-
10,0%https://github.com/spotify/postgresql-metrics1
Nobalsoja 10 lietotÄji. 26 lietotÄji atturÄjÄs.
Avots: www.habr.com