Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Ман тавсия медиҳам, ки стенограммаи гузориши Алексей Лесовскийро аз Data Egret “Асосҳои мониторинги PostgreSQL” хонед.

Дар ин гузориш Алексей Лесовский дар бораи нуктаҳои асосии омори баъдигресс, онҳо чӣ маъно доранд ва чаро онҳо бояд дар мониторинг ҳузур дошта бошанд; дар бораи чӣ гуна графикҳо бояд дар мониторинг бошад, чӣ гуна илова кардани онҳо ва чӣ гуна шарҳ додани онҳо. Ҳисобот барои маъмурони пойгоҳи додаҳо, маъмурони система ва таҳиягароне, ки ба ҳалли мушкилоти Postgres таваҷҷӯҳ доранд, муфид хоҳад буд.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Номи ман Алексей Лесовский, ман ширкати Data Egret-ро намояндагӣ мекунам.

Якчанд сухан дар бораи худам. Ман муддати тӯлонӣ ҳамчун мудири система оғоз кардам.

Ман ҳама навъҳои системаҳои гуногуни Linux-ро идора мекардам, дар чизҳои гуногуни марбут ба Linux кор мекардам, яъне виртуализатсия, мониторинг, бо прокси кор мекардам ва ғайра. Аммо дар баъзе мавридҳо ман бештар бо пойгоҳи додаҳо, PostgreSQL кор карданро сар кардам. Ман ба ӯ хеле маъқул будам. Ва дар як лаҳза ман бештари вақти кории худро дар PostgreSQL кор кардам. Ва оҳиста-оҳиста ман PostgreSQL DBA шудам.

Ва дар тӯли фаъолияти худ ман ҳамеша ба мавзӯъҳои омор, мониторинг ва телеметрия таваҷҷӯҳ доштам. Ва вақте ки ман мудири система будам, ман бо Zabbix хеле зич кор мекардам. Ва ман як маҷмӯи хурди скриптҳоро ба монанди навиштам zabbix-васеъ. Ӯ дар замони худ хеле машҳур буд. Ва дар он ҷо имкон дошт, ки чизҳои хеле муҳими гуногунро назорат кард, на танҳо Linux, балки ҷузъҳои гуногун.

Ҳоло ман дар PostgreSQL кор мекунам. Ман аллакай чизи дигареро менависам, ки ба шумо имкон медиҳад бо омори PostgreSQL кор кунед. Он ном дорад pgCenter (мақола дар бораи Habre - Статистикаи баъдигресс бе асаб ва шиддат).

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Як ёддошти каме. Мизоҷони мо, мизоҷони мо чӣ гуна ҳолатҳо доранд? Як навъ садамаи марбут ба базаи маълумот вуҷуд дорад. Ва вакте ки база аллакай баркарор шудааст, сардори шуъба ё сардори управления омада мегуяд: Рафикон, мо бояд базаи маълумотро назорат кунем, зеро ягон чизи нохуше руй дод ва мо бояд дар оянда ин корро накунем». Ва дар ин ҷо раванди ҷолиби интихоби системаи мониторинг ё мутобиқсозии системаи мавҷудаи мониторинг оғоз мешавад, то шумо метавонед пойгоҳи додаҳои худро - PostgreSQL, MySQL ё баъзеи дигарро назорат кунед. Ва ҳамкорон ба пешниҳод шурӯъ мекунанд: «Шунидам, ки фалон база вуҷуд дорад. Биёед онро истифода барем." Хамкорон бо хамдигар бахсу мунозира мекунанд. Ва дар ниҳоят маълум мешавад, ки мо як навъи махзани маълумотро интихоб мекунем, аммо мониторинги PostgreSQL дар он хеле бад пешниҳод шудааст ва мо ҳамеша бояд чизе илова кунем. Аз GitHub баъзе анборҳоро гиред, онҳоро клон кунед, скриптҳоро мутобиқ кунед ва ба ҳар ҳол онҳоро танзим кунед. Ва дар охир ин як навъ кори дастӣ мегардад.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Аз ин рӯ, дар ин сӯҳбат ман кӯшиш мекунам, ки ба шумо дар бораи чӣ гуна интихоб кардани мониторинг на танҳо барои PostgreSQL, балки барои пойгоҳи додаҳо маълумот диҳам. Ва ба шумо донише бидиҳед, ки ба шумо имкон медиҳад, ки мониторинги худро ба анҷом расонед, то аз он фоида ба даст оред, то шумо метавонед пойгоҳи додаҳои худро бо фоидаи худ назорат кунед, то ҳама гуна ҳолатҳои фавқулоддаи дарпешистодаро пешгирӣ кунед.

Ва ғояҳое, ки дар ин гузориш хоҳанд буд, метавонанд мустақиман ба ҳама гуна пойгоҳи додаҳо мутобиқ карда шаванд, хоҳ он DBMS ё noSQL. Аз ин рӯ, на танҳо PostgreSQL вуҷуд дорад, балки дар бораи чӣ гуна ин корро кардан дар PostgreSQL дастурҳои зиёде мавҷуданд. Намунаҳои дархостҳо, намунаҳои объектҳое мавҷуданд, ки PostgreSQL барои назорат доранд. Ва агар DBMS шумо ҳамон чизҳое дошта бошад, ки ба шумо имкон медиҳад, ки онҳоро дар мониторинг гузоред, шумо инчунин метавонед онҳоро мутобиқ кунед, илова кунед ва ин хуб хоҳад буд.

Асосҳои мониторинги PostgreSQL. Алексей ЛесовскийМан дар гузориш нахоҳам шуд
дар бораи чӣ гуна интиқол додан ва нигоҳ доштани метрика сӯҳбат кунед. Ман дар бораи коркарди пас аз маълумот ва пешниҳоди он ба корбар чизе намегӯям. Ва ман дар бораи огоҳӣ чизе намегӯям.
Аммо вақте ки ҳикоя пеш меравад, ман скриншотҳои гуногуни мониторинги мавҷударо нишон медиҳам ва бо кадом роҳ онҳоро танқид мекунам. Аммо бо вуҷуди ин, ман кӯшиш мекунам, ки брендҳоро ном набарам, то барои ин маҳсулот таблиғ ё зидди таблиғот эҷод накунам. Аз ин рӯ, ҳама тасодуфҳо тасодуфӣ ҳастанд ва ба тасаввуроти шумо вогузор мешаванд.
Асосҳои мониторинги PostgreSQL. Алексей Лесовский
Аввалан, биёед бифаҳмем, ки мониторинг чист. Мониторинг як чизи хеле муҳимест, ки бояд дошта бошад. Инро ҳама мефаҳманд. Аммо дар айни замон, мониторинг ба маҳсулоти тиҷоратӣ дахл надорад ва ба фоидаи ширкат мустақиман таъсир намерасонад, аз ин рӯ ҳамеша барои мониторинг дар асоси боқимонда вақт ҷудо карда мешавад. Агар мо вақт дошта бошем, пас мо назорат мекунем; агар вақт надорем, хуб, мо онро дар ақибмонда мегузорем ва рӯзе ба ин вазифаҳо бармегардем.

Аз ин рӯ, аз таҷрибаи мо, вақте ки мо ба мизоҷон мерасем, мониторинг аксар вақт нопурра аст ва ягон чизи ҷолибе надорад, ки ба мо барои беҳтар кор кардани базаи маълумот кӯмак кунад. Аз ин рӯ, мониторинг ҳамеша бояд анҷом дода шавад.

Пойгоҳи додаҳо чунин чизҳои мураккаб мебошанд, ки онҳоро низ бояд назорат кард, зеро пойгоҳи додаҳо як анбори иттилоот мебошанд. Ва иттилоот барои ширкат хеле муҳим аст, онро ба ҳеҷ ваҷҳ гум кардан мумкин нест. Аммо дар айни замон, пойгоҳи додаҳо қисмҳои хеле мураккаби нармафзор мебошанд. Онҳо аз миқдори зиёди ҷузъҳо иборатанд. Ва бисёре аз ин ҷузъҳо бояд назорат карда шаванд.

Асосҳои мониторинги PostgreSQL. Алексей ЛесовскийАгар мо махсусан дар бораи PostgreSQL сухан ронем, он гоҳ онро метавон дар шакли схемае муаррифӣ кард, ки аз миқдори зиёди ҷузъҳо иборат аст. Ин ҷузъҳо бо ҳамдигар ҳамкорӣ мекунанд. Ва дар айни замон, PostgreSQL дорои зерсистемаи ба истилоҳ Коллектори Статистика мебошад, ки ба шумо имкон медиҳад оморро дар бораи кори ин зерсистемаҳо ҷамъоварӣ кунед ва ба маъмур ё корбар як навъ интерфейс пешниҳод кунед, то ӯ ин оморҳоро бубинад.

Ин оморҳо дар шакли маҷмӯи муайяни вазифаҳо ва назарҳо пешниҳод карда мешаванд. Онҳоро инчунин ҷадвал номидан мумкин аст. Яъне, бо истифода аз муштарии муқаррарии psql, шумо метавонед ба пойгоҳи додаҳо пайваст шавед, ин функсияҳо ва намудҳоро интихоб кунед ва дар бораи кори зерсистемаҳои PostgreSQL рақамҳои мушаххас гиред.

Шумо метавонед ин рақамҳоро ба системаи мониторинги дӯстдоштаи худ илова кунед, графикҳо кашед, функсияҳо илова кунед ва дар муддати тӯлонӣ таҳлилҳо гиред.

Аммо дар ин гузориш ман ҳамаи ин вазифаҳоро пурра фаро намегирам, зеро он метавонад тамоми рӯзро талаб кунад. Ман аслан ба ду, се ё чор чиз муроҷиат мекунам ва ба шумо мегӯям, ки чӣ тавр онҳо ба беҳтар кардани мониторинг кӯмак мекунанд.
Асосҳои мониторинги PostgreSQL. Алексей Лесовский
Ва агар мо дар бораи мониторинги базаи маълумот гап занем, пас чиро бояд назорат кард? Пеш аз ҳама, мо бояд мавҷудиятро назорат кунем, зеро базаи маълумот хидматест, ки дастрасии маълумотро ба мизоҷон фароҳам меорад ва мо бояд мавҷудиятро назорат кунем ва инчунин баъзе хусусиятҳои сифатӣ ва миқдориро пешниҳод кунем.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Мо инчунин бояд мизоҷонеро, ки ба базаи мо пайвастанд, назорат кунем, зеро онҳо метавонанд ҳам мизоҷони муқаррарӣ ва ҳам муштариёни зараровар бошанд, ки метавонанд ба пойгоҳи додаҳо зарар расонанд. Онҳо инчунин бояд назорат карда шаванд ва фаъолияти онҳо пайгирӣ карда шавад.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Вақте ки муштариён ба пойгоҳи додаҳо пайваст мешаванд, маълум аст, ки онҳо бо маълумоти мо кор мекунанд, аз ин рӯ мо бояд назорат кунем, ки муштариён бо маълумот чӣ гуна кор мекунанд: бо кадом ҷадвалҳо ва ба андозаи камтар бо кадом индексҳо. Яъне, мо бояд сарбории кореро, ки муштариёни мо эҷод мекунанд, арзёбӣ кунем.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Аммо сарбории кор низ, албатта, аз дархостҳо иборат аст. Барномаҳо ба пойгоҳи додаҳо пайваст мешаванд, маълумотро бо истифода аз дархостҳо дастрас мекунанд, аз ин рӯ муҳим аст, ки баҳо диҳем, ки кадом дархостҳои мо дар пойгоҳи додаҳо мавҷуданд, мувофиқати онҳоро назорат кунед, ки онҳо каҷ навишта нашудаанд, баъзе вариантҳоро аз нав навиштан ва сохтан лозим аст, то онҳо зудтар кор кунанд. ва бо иҷрои беҳтар.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Ва азбаски мо дар бораи пойгоҳи додаҳо гап мезанем, пойгоҳи додаҳо ҳамеша равандҳои замина мебошанд. Равандҳои пасзамина дар сатҳи хуб нигоҳ доштани кори пойгоҳи додаҳо кӯмак мекунанд, аз ин рӯ онҳо барои кор кардани худ миқдори муайяни захираҳоро талаб мекунанд. Ва дар айни замон, онҳо метавонанд бо захираҳои дархости муштарӣ мувофиқат кунанд, аз ин рӯ равандҳои пасзаминаи хасисона метавонанд ба иҷрои дархостҳои муштарӣ мустақиман таъсир расонанд. Аз ин рӯ, онҳоро низ бояд назорат ва пайгирӣ кард, то дар робита ба равандҳои замина таҳриф нашавад.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Ва ҳамаи ин дар робита ба мониторинги пойгоҳи додаҳо дар метрикаи система боқӣ мемонад. Аммо бо назардошти он, ки аксарияти инфрасохтори мо ба абрҳо ҳаракат мекунанд, ченакҳои системаи мизбони инфиродӣ ҳамеша дар замина пажмурда мешаванд. Аммо дар пойгоҳи додаҳо онҳо ҳанӯз ҳам мувофиқанд ва албатта, инчунин мониторинги метрикаи система зарур аст.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Бо метрикаи система ҳама чиз каму беш хуб аст, ҳама системаҳои муосири мониторинг аллакай ин нишондиҳандаҳоро дастгирӣ мекунанд, аммо дар маҷмӯъ, баъзе ҷузъҳо ҳанӯз кофӣ нестанд ва баъзе чизҳоро илова кардан лозим аст. Ман ба онҳо низ дахл мекунам, дар бораи онҳо якчанд слайдҳо мавҷуданд.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский
Нуктаи якуми нақша дастрасӣ мебошад. Дастрасӣ чист? Дастрасӣ ба фаҳмиши ман ин қобилияти пойгоҳ барои хидматрасонии пайвастҳо мебошад, яъне пойгоҳ баланд мешавад, он ҳамчун хидмат пайвастҳоро аз муштариён қабул мекунад. Ва ин дастрасиро метавон аз рӯи хусусиятҳои муайян арзёбӣ кард. Намоиши ин хусусиятҳо дар панели асбобҳо хеле қулай аст.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский
Ҳама медонанд, ки панелҳои идоракунӣ чист. Ин вақтест, ки шумо як маротиба ба экран нигоҳ кардед, ки дар он маълумоти зарурӣ ҷамъбаст карда мешавад. Ва шумо метавонед фавран муайян кунед, ки оё дар базаи маълумот мушкилот вуҷуд дорад ё не.
Мувофиқи он, мавҷудияти пойгоҳи додаҳо ва дигар хусусиятҳои калидӣ бояд ҳамеша дар панелҳои идоракунӣ нишон дода шаванд, то ин маълумот дар дасти шумо бошад ва ҳамеша дастрас бошад. Баъзе тафсилоти иловагӣ, ки аллакай дар таҳқиқи ҳодисаҳо кӯмак мекунанд, ҳангоми таҳқиқи баъзе ҳолатҳои фавқулодда, онҳо бояд аллакай дар панелҳои дуюмдараҷа ҷойгир карда шаванд ё дар пайвандҳои пармакунӣ, ки ба системаҳои мониторинги тарафи сеюм оварда мерасонанд, пинҳон карда шаванд.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Намунаи як системаи маъруфи мониторинг. Ин як системаи мониторинги хеле аҷиб аст. Вай маълумоти зиёде ҷамъ мекунад, аммо аз нуқтаи назари ман, вай консепсияи аҷиби панелҳои идоракунӣ дорад. Истиноди "сохтани панели идоракунӣ" мавҷуд аст. Аммо вақте ки шумо панели идоракуниро эҷод мекунед, шумо рӯйхати ду сутун, рӯйхати графикҳоро эҷод мекунед. Ва ҳангоме ки ба чизе назар кардан лозим аст, шумо бо пахш кардани муш, ҳаракат кардан ва ҷустуҷӯи диаграммаи дилхоҳро оғоз мекунед. Ва ин вақтро мегирад, яъне ягон панели идоракунӣ вуҷуд надорад. Танҳо рӯйхати диаграммаҳо мавҷуданд.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Шумо бояд ба ин панелҳои идоракунӣ чӣ илова кунед? Шумо метавонед бо чунин хусусият ба монанди вақти посух оғоз кунед. PostgreSQL намуди pg_stat_statements дорад. Он бо нобаёнӣ ғайрифаъол аст, аммо он яке аз намуди муҳими система аст, ки ҳамеша бояд фаъол ва истифода шавад. Он маълумотро дар бораи ҳама дархостҳои иҷрошаванда, ки дар пойгоҳи додаҳо иҷро шудаанд, нигоҳ медорад.

Мувофиқи он, мо метавонем аз он оғоз кунем, ки мо метавонем вақти умумии иҷрои ҳама дархостҳоро гирифта, онро ба шумораи дархостҳо бо истифода аз майдонҳои дар боло овардашуда тақсим кунем. Аммо ин ҳарорати миёнаи беморхона аст. Мо метавонем аз дигар соҳаҳо оғоз кунем - вақти ҳадди ақали иҷрои дархост, ҳадди аксар ва медиан. Ва мо ҳатто метавонем фоизҳо созем; PostgreSQL барои ин вазифаҳои мувофиқ дорад. Ва мо метавонем баъзе рақамҳоро ба даст орем, ки вақти вокуниши пойгоҳи додаҳои моро барои дархостҳои аллакай анҷомёфта тавсиф мекунанд, яъне мо дархости қалбакии "1-ро интихоб кунед" -ро иҷро намекунем ва ба вақти посух назар мекунем, аммо мо вақти вокунишро барои дархостҳои аллакай анҷомёфта таҳлил мекунем ва ҷалб мекунем. ё расми алохида, ё аз руи он график месозем.

Инчунин муҳим аст, ки шумораи хатогиҳое, ки дар айни замон аз ҷониби система тавлид мешаванд, назорат кунед. Ва барои ин шумо метавонед намуди pg_stat_database -ро истифода баред. Мо ба майдони xact_rollback тамаркуз мекунем. Дар ин майдон на танҳо шумораи бозгаштҳое, ки дар пойгоҳи додаҳо рух медиҳанд, нишон медиҳад, балки шумораи хатогиҳоро низ ба назар мегирад. Нисбатан, мо метавонем ин рақамро дар панели худ нишон диҳем ва бубинем, ки дар айни замон чӣ қадар хатогиҳо дорем. Агар хатогиҳо зиёд бошанд, пас ин як сабаби хубест барои дидан ба гузоришҳо ва бубинед, ки онҳо чӣ гуна хатогиҳо доранд ва чаро онҳо рух медиҳанд ва сипас онҳоро сармоягузорӣ кунед ва ҳал кунед.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Шумо метавонед чунин чизеро ба монанди тахометр илова кунед. Инҳо шумораи транзаксияҳо дар як сония ва шумораи дархостҳо дар як сония мебошанд. Нисбатан гӯем, шумо метавонед ин рақамҳоро ҳамчун нишондиҳандаи ҷории пойгоҳи додаи худ истифода баред ва мушоҳида кунед, ки оё қуллаҳои дархостҳо, қуллаҳои транзаксияҳо вуҷуд доранд ё баръакс, оё пойгоҳи додаҳо аз сабаби нокомии баъзе пасандозҳо камбор карда шудаанд. Муҳим аст, ки ҳамеша ба ин рақам нигоҳ кунем ва дар хотир дошта бошем, ки барои лоиҳаи мо ин гуна иҷроиш муқаррарӣ аст, аммо арзишҳои боло ва поён аллакай як навъ мушкилот ва нофаҳмо мебошанд, яъне мо бояд бубинем, ки чаро ин рақамҳо чунон баланд.

Барои ҳисоб кардани шумораи транзаксияҳо, мо метавонем боз ба намуди pg_stat_database муроҷиат кунем. Мо метавонем шумораи ӯҳдадориҳо ва шумораи бозгаштҳоро илова кунем ва шумораи транзаксияҳоро дар як сония ба даст орем.

Оё ҳама мефаҳманд, ки якчанд дархост метавонад ба як транзаксия мувофиқат кунад? Аз ин рӯ, TPS ва QPS каме фарқ мекунанд.

Шумораи дархостҳоро дар як сония метавон аз pg_stat_statements ба даст овард ва танҳо маблағи ҳамаи дархостҳои анҷомёфтаро ҳисоб кард. Маълум аст, ки мо арзиши кунуниро бо арзиши қаблӣ муқоиса мекунем, онро тарҳ мекунем, дельтаро мегирем ва микдорро мегирем.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Агар хоҳед, шумо метавонед ченакҳои иловагиро илова кунед, ки онҳо инчунин ба арзёбии мавҷудияти пойгоҳи додаҳои мо кӯмак мекунанд ва назорат мекунанд, ки оё вақти бекорӣ вуҷуд дорад.

Яке аз ин нишондиҳандаҳо вақти корӣ мебошад. Аммо вақти корӣ дар PostgreSQL каме душвор аст. Ман ба шумо мегӯям, ки чаро. Вақте ки PostgreSQL оғоз шуд, вақти корӣ гузориш доданро оғоз мекунад. Аммо агар дар ягон лаҳза, масалан, ягон вазифа шабона иҷро мешуд, як OOM-қотил омада, раванди кӯдаки PostgreSQL-ро маҷбуран қатъ кард, пас дар ин ҳолат PostgreSQL пайвасти ҳама муштариёнро қатъ мекунад, майдони хотираи ҷудошударо аз нав барқарор мекунад ва барқароршавӣ аз гузаргоҳи охирин. Ва дар ҳоле, ки ин барқароршавӣ аз нуқтаи гузар давом мекунад, пойгоҳи додаҳо пайвастҳоро қабул намекунад, яъне ин вазъро метавон ҳамчун вақти бекорӣ арзёбӣ кард. Аммо ҳисобкунаки вақти корӣ аз нав барқарор карда намешавад, зеро он аз лаҳзаи аввал вақти оғозёбии постмастерро ба назар мегирад. Аз ин рӯ, ин гуна ҳолатҳоро партофтан мумкин аст.

Шумо инчунин бояд шумораи коргарони чангкашакро назорат кунед. Оё ҳама медонанд, ки автовакуум дар PostgreSQL чист? Ин зерсистемаи ҷолиб дар PostgreSQL аст. Дар хакки вай маколахои бисьёре навишта шудаанд, бисьёр маърузахо навишта шудаанд. Дар бораи вакуум ва чӣ гуна он бояд кор кунад, баҳсҳои зиёде мавҷуданд. Бисёриҳо онро як бадии зарурӣ медонанд. Аммо хамин тавр аст. Ин як навъ аналоги коллектори ахлот аст, ки версияҳои кӯҳнаи сатрҳоро, ки барои ягон транзаксия лозим нестанд, тоза мекунад ва дар ҷадвалҳо ва индексҳо барои сатрҳои нав ҷой холӣ мекунад.

Чаро шумо бояд онро назорат кунед? Зеро вакуум баъзан сахт дард мекунад. Он миқдори зиёди захираҳоро истеъмол мекунад ва дар натиҷа дархостҳои муштарӣ осеб мебинанд.

Ва он бояд тавассути намуди pg_stat_activity назорат карда шавад, ки ман дар бораи он дар боби оянда сӯҳбат хоҳам кард. Ин намоиш фаъолияти ҷорӣ дар базаи маълумотро нишон медиҳад. Ва тавассути ин фаъолият мо метавонем шумораи вакуумҳоеро, ки ҳоло кор мекунанд, пайгирӣ кунем. Мо метавонем вакуумҳоро пайгирӣ кунем ва бубинем, ки агар мо аз ҳад зиёд гузашта бошем, пас ин як сабабест барои дидан ба танзимоти PostgreSQL ва ба ҳар навъ оптимизатсия кардани кори вакуум.

Чизи дигар дар бораи PostgreSQL ин аст, ки PostgreSQL аз муомилоти тӯлонӣ хеле бемор аст. Хусусан аз муомилаҳое, ки муддати тӯлонӣ овезон мешаванд ва ҳеҷ кор намекунанд. Ин ба ном бекористии статистикӣ дар транзаксия мебошад. Чунин муомилот қуфлҳоро нигоҳ медорад ва аз кор кардани вакуум пешгирӣ мекунад. Ва дар натича мизхо варам карда, андозаашон зиёд мешавад. Ва дархостҳое, ки бо ин ҷадвалҳо кор мекунанд, сусттар кор мекунанд, зеро ба шумо лозим аст, ки ҳамаи версияҳои кӯҳнаи сатрҳоро аз хотира ба диск ва қафо кашед. Аз ин рӯ, вақт, давомнокии тӯлонитарин транзаксияҳо, дарозтарин дархостҳои вакуумӣ низ бояд назорат карда шаванд. Ва агар мо баъзе равандҳоеро бубинем, ки барои бори OLTP муддати хеле тӯлонӣ, аллакай беш аз 10-20-30 дақиқа кор мекунанд, пас мо бояд ба онҳо диққат диҳем ва онҳоро маҷбуран қатъ кунем ё барномаро оптимизатсия кунем, то онҳо занг намезананд ва ин кадар дароз овезон нашаванд. Барои сарбории аналитикӣ 10-20-30 дақиқа муқаррарӣ аст, инчунин дақиқаҳои дарозтар мавҷуданд.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский
Баъдан мо имкон дорем бо муштариёни пайваст. Вақте ки мо аллакай як панели идоракуниро сохтаем ва дар он нишондиҳандаҳои мавҷудияти калидҳоро ҷойгир кардем, мо инчунин метавонем маълумоти иловагӣ дар бораи муштариёни пайвастшуда дар он ҷо илова кунем.

Маълумот дар бораи муштариёни пайваст муҳим аст, зеро аз нуқтаи назари PostgreSQL, мизоҷон гуногунанд. Мизоҷони хуб ҳастанд ва мизоҷони бад ҳастанд.

Як мисоли оддӣ. Аз ҷониби муштарӣ ман барномаро мефаҳмам. Барнома ба пойгоҳи додаҳо пайваст шуда, фавран ба фиристодани дархостҳои худ оғоз мекунад, пойгоҳи додаҳо онҳоро коркард ва иҷро мекунад ва натиҷаҳоро ба муштарӣ бармегардонад. Инҳо мизоҷони хуб ва дурустанд.

Ҳолатҳое ҳастанд, ки муштарӣ пайваст шудааст, он пайвастро нигоҳ медорад, аммо ҳеҷ кор намекунад. Он дар ҳолати бекор аст.

Аммо мизоҷони бад ҳастанд. Масалан, ҳамон муштарӣ пайваст шуд, транзаксия кушод, дар базаи маълумот коре кард ва сипас ба код ворид шуд, масалан, барои дастрасӣ ба манбаи беруна ё коркарди маълумоти гирифташуда дар он ҷо. Аммо вай муомилотро набастанд. Ва транзаксия дар базаи маълумот овезон аст ва дар қуфл дар хат нигоҳ дошта мешавад. Ин як ҳолати бад аст. Ва агар ногаҳон ягон барнома дар дохили худ ба истиснои ҳолатҳо ноком шавад, пас транзаксия метавонад барои муддати хеле дароз кушода бошад. Ва ин бевосита ба иҷрои PostgreSQL таъсир мерасонад. PostgreSQL сусттар мешавад. Аз ин рӯ, зарур аст, ки чунин мизоҷон сари вақт пайгирӣ карда, кори онҳо маҷбуран қатъ карда шавад. Ва шумо бояд барномаи худро оптимизатсия кунед, то ин гуна ҳолатҳо рух надиҳад.

Дигар мизоҷони бад интизори мизоҷон мебошанд. Аммо онҳо аз сабаби вазъият бад мешаванд. Масалан, як транзаксияи оддии бекор: он метавонад транзаксияро кушояд, қуфлҳоро дар баъзе сатрҳо гирад, пас дар ҷое дар код он ноком мешавад ва амалиёти овезон боқӣ мемонад. Муштарии дигар меояд ва ҳамон маълумотро талаб мекунад, аммо вай бо қулф дучор мешавад, зеро ин транзаксияи овезон аллакай дар баъзе сатрҳои зарурӣ қуфлҳоро нигоҳ медорад. Ва муомилоти дуюм дар интизори анҷоми муомилоти аввал ё маҷбуран бастани он аз ҷониби мудир мемонад. Аз ин рӯ, транзаксияҳои интизоршаванда метавонанд маҳдудияти пайвасти пойгоҳи додаҳоро ҷамъ кунанд ва пур кунанд. Ва вақте ки маҳдудият пур мешавад, барнома дигар наметавонад бо пойгоҳи додаҳо кор кунад. Ин аллакай як ҳолати фавқулодда барои лоиҳа аст. Аз ин рӯ, мизоҷони бад бояд сари вақт пайгирӣ карда шаванд ва ба онҳо ҷавоб диҳанд.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Мисоли дигари мониторинг. Ва дар ин ҷо аллакай як панели мувофиқ мавҷуд аст. Маълумот дар бораи пайвастшавӣ дар боло мавҷуд аст. Пайвастшавӣ ба DB – 8 адад. Ва ҳамааш. Мо маълумот надорем, ки кадом мизоҷ фаъол аст ва кадоме аз муштариён танҳо бекоранд ва коре намекунанд. Дар бораи транзаксияҳои интизорӣ ва пайвастагиҳои интизорӣ маълумоте нест, яъне ин рақамест, ки шумораи пайвастҳоро нишон медиҳад ва тамом. Ва он гоҳ барои худ тахмин кунед.
Асосҳои мониторинги PostgreSQL. Алексей Лесовский
Мувофиқи он, барои илова кардани ин маълумот ба мониторинг, шумо бояд ба намуди системаи pg_stat_activity дастрасӣ пайдо кунед. Агар шумо дар PostgreSQL вақти зиёд сарф кунед, пас ин як намуди хеле хуб аст, ки бояд дӯсти шумо шавад, зеро он фаъолияти ҷорӣ дар PostgreSQL, яъне он чизеро, ки дар он рӯй медиҳад, нишон медиҳад. Барои ҳар як раванд як сатри алоҳида мавҷуд аст, ки маълумотро дар бораи ин раванд нишон медиҳад: пайвастшавӣ аз кадом ҳост, таҳти кадом корбар, бо кадом ном, кай транзаксия оғоз шудааст, кадом дархост ҳоло иҷро мешавад, кадом дархост охирин иҷро шудааст. Ва, мувофиқан, мо метавонем ҳолати муштариро бо истифода аз майдони stat арзёбӣ кунем. Нисбатан, мо метавонем аз рӯи ин соҳа гурӯҳбандӣ кунем ва он оморҳоеро, ки ҳоло дар пойгоҳи додаҳо мавҷуданд ва шумораи пайвастҳое, ки ин оморро дар пойгоҳи додаҳо доранд, гирем. Ва мо метавонем рақамҳои аллакай гирифташударо ба мониторинги худ фиристем ва дар асоси онҳо графикҳо кашем.
Инчунин муҳим аст, ки баҳодиҳии давомнокии муомилот. Ман аллакай гуфта будам, ки баҳодиҳии давомнокии вакуумҳо муҳим аст, аммо транзаксияҳо ҳамон тавр баҳо дода мешаванд. Майдонҳои xact_start ва query_start мавҷуданд. Онҳо, дар муқоиса бо он, вақти оғози муомилот ва вақти оғози дархостро нишон медиҳанд. Мо функсияи now()-ро мегирем, ки тамғаи вақти ҷорӣро нишон медиҳад ва транзаксия ва тамғаи вақти дархостро хориҷ мекунем. Ва мо давомнокии муомилот, давомнокии дархостро мегирем.

Агар мо транзаксияҳои дарозро бинем, мо бояд онҳоро аллакай анҷом диҳем. Барои бори OLTP, транзаксияҳои тӯлонӣ аллакай аз 1-2-3 дақиқа зиёданд. Барои сарбории OLAP, транзаксияҳои тӯлонӣ муқаррарӣ мебошанд, аммо агар барои анҷом додани онҳо зиёда аз ду соат вақт лозим бошад, ин инчунин нишонаи он аст, ки мо дар ҷое каҷ дорем.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский
Вақте ки муштариён ба пойгоҳи додаҳо пайваст шуданд, онҳо бо маълумоти мо кор мекунанд. Онҳо ба ҷадвалҳо дастрасӣ доранд, онҳо ба индексҳо дастрасӣ доранд, то аз ҷадвал маълумот гиранд. Ва муҳим аст, ки чӣ гуна муштариён бо ин маълумот муомила мекунанд.

Ин барои баҳодиҳии сарбории мо ва тахминан фаҳмидани он, ки кадом ҷадвалҳо барои мо "гармтарин" ҳастанд, зарур аст. Масалан, ин дар ҳолатҳое лозим аст, ки мо мехоҳем ҷадвалҳои "гарм" -ро дар як намуди нигаҳдории SSD зуд ҷойгир кунем. Масалан, баъзе ҷадвалҳои бойгонӣ, ки мо муддати тӯлонӣ истифода намебарем, метавонанд ба як навъ архиви "сард", ба дискҳои SATA интиқол дода шаванд ва ба онҳо иҷозат диҳанд, ки дар он ҷо зиндагӣ кунанд, ба онҳо ҳангоми зарурат дастрасӣ пайдо мекунанд.

Ин инчунин барои ошкор кардани аномалияҳо пас аз ҳама гуна нашрҳо ва ҷойгиркунӣ муфид аст. Фарз мекунем, ки лоиҳа баъзе хусусияти навро баровардааст. Масалан, мо барои кор бо базаи маълумот функсияҳои нав илова кардем. Ва агар мо графикҳои истифодаи ҷадвалро тартиб диҳем, мо метавонем ин аномалияҳоро дар ин графикҳо ба осонӣ ошкор кунем. Масалан, таркишҳоро навсозӣ кунед ё таркишҳоро нест кунед. Он хеле намоён хоҳад буд.

Шумо инчунин метавонед аномалияҳоро дар омори "шинокунанда" ошкор кунед. Ин чӣ маъно дорад? PostgreSQL дорои нақшаи пурсишҳои хеле қавӣ ва хеле хуб аст. Ва таҳиягарон барои рушди он вақти зиёд сарф мекунанд. Ӯ чӣ гуна кор мекунад? Барои таҳияи нақшаҳои хуб, PostgreSQL омори тақсимоти маълумотро дар ҷадвалҳо дар фосилаи муайяни вақт ва басомади муайян ҷамъ меорад. Инҳо арзишҳои маъмултарин мебошанд: шумораи арзишҳои беназир, маълумот дар бораи NULL дар ҷадвал, маълумоти зиёд.

Дар асоси ин омор, банақшагир якчанд дархостҳоро месозад, беҳтаринашро интихоб мекунад ва ин нақшаи дархостро барои иҷрои худи дархост ва баргардонидани маълумот истифода мебарад.

Ва чунин мешавад, ки омор «шино мекунад». Маълумоти сифат ва миќдор дар љадвал ба гунае таѓйир ёфт, аммо омор љамъ карда нашуд. Ва нақшаҳои таҳияшуда метавонанд оптимал набошанд. Ва агар нақшаҳои мо дар асоси мониторинги ҷамъовардашуда, дар асоси ҷадвалҳо ғайриоддӣ шаванд, мо метавонем ин аномалияҳоро бубинем. Масалан, дар ҷое маълумот сифатан тағйир ёфт ва ба ҷои индекс гузариш пайдарпай аз ҷадвал истифода мешавад, яъне. агар дархост танҳо 100 сатрро баргардонад (маҳдудияти 100 вуҷуд дорад), пас барои ин дархост ҷустуҷӯи пурра анҷом дода мешавад. Ва ин ҳамеша ба иҷроиш таъсири хеле бад мерасонад.

Ва мо инро дар мониторинг мебинем. Ва аллакай ба ин пурсиш нигаред, шарҳи онро иҷро кунед, омор ҷамъ кунед, индекси нави иловагӣ созед. Ва аллакай ба ин мушкилот ҷавоб диҳед. Барои ҳамин муҳим аст.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Мисоли дигари мониторинг. Ман фикр мекунам, ки бисёриҳо ӯро шинохтанд, зеро ӯ хеле машҳур аст. Кӣ онро дар лоиҳаҳои худ истифода мебарад Prometheus? Кӣ ин маҳсулотро дар якҷоягӣ бо Prometheus истифода мебарад? Гап дар он аст, ки дар анбори стандартии ин мониторинг панели идоракунӣ барои кор бо PostgreSQL мавҷуд аст - postgres_exporter Прометей. Аммо як ҷузъиёти бад вуҷуд дорад.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Якчанд графикҳо мавҷуданд. Ва байтҳо ҳамчун ягона нишон дода шудаанд, яъне 5 график мавҷуд аст. Инҳо дохил кардани маълумот, навсозии маълумот, нест кардани маълумот, гирифтани маълумот ва бозгашти маълумот мебошанд. Андозаи воҳиди байт аст. Аммо гап дар он аст, ки омор дар PostgreSQL маълумотро дар tuple (сатр) бармегардонад. Ва, мутаносибан, ин графикҳо як роҳи хеле хубест барои чанд маротиба, даҳҳо маротиба кам кардани сарбории шумо, зеро кортеж байт нест, кортела сатр аст, он байтҳои зиёд аст ва ҳамеша дарозии тағйирёбанда аст. Яъне, ҳисоб кардани сарбории корӣ дар байтҳо бо истифода аз наворҳо кори ғайривоқеӣ ё хеле душвор аст. Аз ин рӯ, вақте ки шумо панели идоракунӣ ё мониторинги дарунсохтро истифода мебаред, ҳамеша муҳим аст, ки фаҳмед, ки он дуруст кор мекунад ва ба шумо маълумоти дуруст арзёбӣшударо бармегардонад.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Чӣ тавр оморро дар ин ҷадвалҳо гирифтан мумкин аст? Бо ин мақсад, PostgreSQL як оилаи муайяни назар дорад. Ва назари асосӣ ин аст pg_stat_user_tables. User_tables - ин маънои ҷадвалҳоеро дорад, ки аз номи корбар сохта шудаанд. Баръакси ин, намуди системаҳое мавҷуданд, ки аз ҷониби худи PostgreSQL истифода мешаванд. Ва ҷадвали ҷамъбастии Alltables мавҷуд аст, ки ҳам система ва ҳам корбарро дар бар мегирад. Шумо метавонед аз ҳар яке аз онҳо, ки ба шумо бештар маъқул аст, оғоз кунед.

Бо истифода аз майдонҳои дар боло зикршуда шумо метавонед шумораи дохилкунӣ, навсозӣ ва несткуниро ҳисоб кунед. Намунаи панели идоракунӣ, ки ман истифода кардам, ин майдонҳоро барои арзёбии хусусиятҳои сарбории корӣ истифода мебарад. Аз ин рӯ, мо низ метавонем дар асоси онҳо. Аммо бояд дар хотир дошт, ки инҳо байтҳо ҳастанд, на байтҳо, аз ин рӯ мо наметавонем онро танҳо дар байт иҷро кунем.

Дар асоси ин маълумот, мо метавонем ҷадвалҳои ба ном TopN созем. Масалан, Топ-5, Топ-10. Ва шумо метавонед он мизҳои гармро пайгирӣ кунед, ки бештар аз дигарон коркард мешаванд. Масалан, 5 ҷадвали "гарм" барои ворид кардан. Ва бо истифода аз ин ҷадвалҳои TopN мо сарбории кори худро арзёбӣ мекунем ва метавонем пас аз ҳама нашрҳо, навсозӣ ва ҷойгиркунӣ сарбории корро арзёбӣ кунем.

Инчунин муҳим аст, ки баҳодиҳии андозаи ҷадвал, зеро баъзан таҳиягарон хусусияти навро мебароранд ва ҷадвалҳои мо ба андозаи калон варам мекунанд, зеро онҳо тасмим гирифтанд, ки миқдори иловагии маълумотро илова кунанд, аммо пешгӯӣ накарданд, ки ин чӣ гуна хоҳад буд. ба андозаи базаи маълумот таъсир мерасонад. Чунин ҳолатҳо барои мо ҳам тааҷҷубоваранд.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Ва ҳоло як саволи хурд барои шумо. Вақте ки шумо сарбории сервери пойгоҳи додаи худро мушоҳида мекунед, кадом савол ба миён меояд? Саволи навбатии шумо чист?

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Аммо дар асл савол чунин ба миён меояд. Сарборӣ кадом дархостҳоро ба вуҷуд меорад? Яъне, ба равандҳое, ки аз бори вазнин ба вуҷуд меоянд, ҷолиб нест. Маълум аст, ки агар мизбон базаи маълумот дошта бошад, пас базаи маълумот дар он ҷо кор мекунад ва маълум аст, ки танҳо пойгоҳи додаҳо дар он ҷо ихтиёр карда мешаванд. Агар мо Topро кушоем, мо дар он ҷо рӯйхати равандҳоро дар PostgreSQL мебинем, ки коре мекунанд. Аз Top маълум нест, ки онҳо чӣ кор мекунанд.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Мувофиқи он, шумо бояд он дархостҳоеро пайдо кунед, ки боиси сарбории баландтарин мешаванд, зеро танзими дархостҳо, чун қоида, назар ба танзими PostgreSQL ё конфигуратсияи системаи оператсионӣ ва ҳатто танзими сахтафзор фоидаи бештар медиҳад. Аз руи тахмини ман ин тахминан 80—85—90 фоизро ташкил медихад. Ва ин хеле зудтар анҷом дода мешавад. Ислоҳи дархост назар ба ислоҳи конфигуратсия, ба нақша гирифтани бозоғозӣ, хусусан агар пойгоҳи додаҳо аз нав оғоз карда нашавад ва ё илова кардани сахтафзор зудтартар аст. Дар ҷое аз нав навиштани дархост ё илова кардани индекс барои гирифтани натиҷаи беҳтар аз ин дархост осонтар аст.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский
Аз ин рӯ, зарур аст, ки дархостҳо ва мувофиқати онҳоро назорат кунанд. Мисоли дигари мониторингро гирем. Ва дар ин ҷо низ ба назар чунин мерасад, ки мониторинги аъло вуҷуд дорад. Маълумот дар бораи такрорӣ вуҷуд дорад, маълумот дар бораи интиқол, басташавӣ, истифодаи захираҳо мавҷуд аст. Ҳама чиз хуб аст, аммо дар бораи дархостҳо маълумоте нест. Маълум нест, ки дар базаи мо кадом дархостҳо иҷро мешаванд, онҳо чӣ қадар давом мекунанд, чанде аз ин дархостҳо ҳастанд. Мо бояд ҳамеша ин маълумотро дар мониторинги худ дошта бошем.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Ва барои гирифтани ин маълумот мо метавонем модули pg_stat_statements -ро истифода барем. Дар асоси он, шумо метавонед графикҳои гуногун созед. Масалан, шумо метавонед маълумотро дар бораи дархостҳои маъмултарин, яъне дар бораи он дархостҳое, ки аксар вақт иҷро мешаванд, гиред. Бале, пас аз ҷойгиркунӣ инчунин дидани он ва фаҳмидани он ки оё афзоиши дархостҳо вуҷуд дорад, хеле муфид аст.

Шумо метавонед дархостҳои тӯлонитаринро, яъне он дархостҳоеро, ки барои анҷоми муддати тӯлонӣ лозиманд, назорат кунед. Онҳо дар протсессор кор мекунанд, онҳо I/O-ро истеъмол мекунанд. Мо инчунин метавонем инро бо истифода аз майдонҳои total_time, mean_time, blk_write_time ва blk_read_time арзёбӣ кунем.

Мо метавонем дархостҳои вазнинтаринро аз рӯи истифодаи захираҳо, онҳое, ки аз диск мехонанд, бо хотира кор мекунанд ё, баръакс, як навъ сарбории хаттӣ эҷод мекунанд, арзёбӣ ва назорат кунем.

Мо метавонем дархостҳои саховатмандтаринро арзёбӣ кунем. Инҳо дархостҳое мебошанд, ки шумораи зиёди сатрҳоро бармегардонанд. Масалан, ин метавонад як дархост бошад, ки онҳо муқаррар кардани маҳдудиятро фаромӯш кардаанд. Ва он танҳо тамоми мундариҷаи ҷадвал ё дархостро дар ҷадвалҳои дархостшуда бармегардонад.

Ва шумо инчунин метавонед дархостҳоеро, ки файлҳои муваққатӣ ё ҷадвалҳои муваққатиро истифода мебаранд, назорат кунед.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский
Ва мо ҳоло ҳам равандҳои замина дорем. Равандҳои пасзамина пеш аз ҳама нуқтаҳои назоратӣ мебошанд ё онҳоро гузаргоҳҳо низ меноманд, инҳо автовакуум ва такрорӣ мебошанд.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Мисоли дигари мониторинг. Дар тарафи чап ҷадвали Нигоҳдорӣ мавҷуд аст, ба он равед ва умедворед, ки чизи муфидро бубинед. Аммо дар ин ҷо танҳо вақти амалиёти вакуумӣ ва ҷамъоварии омор аст, дигар чизе нест. Ин маълумоти хеле камбизоат аст, аз ин рӯ мо ҳамеша бояд маълумот дошта бошем, ки равандҳои пасзамина дар базаи мо чӣ гуна кор мекунанд ва оё дар кори онҳо ягон мушкилот вуҷуд дорад.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Вақте ки мо ба гузаргоҳҳо назар мекунем, мо бояд дар хотир дорем, ки нуқтаҳои гузаргоҳ саҳифаҳои ифлосро аз майдони хотираи ҷудошуда ба диск тоза мекунанд ва сипас нуқтаи назоратӣ эҷод мекунанд. Ва ин гузаргоҳ метавонад ҳамчун ҷои барқарорсозӣ истифода шавад, агар PostgreSQL дар ҳолати фавқулодда ногаҳон қатъ карда шавад.

Мутаносибан, барои тоза кардани ҳама саҳифаҳои "ифлос" ба диск, шумо бояд миқдори муайяни навиштанро анҷом диҳед. Ва, чун қоида, дар системаҳои дорои миқдори зиёди хотира, ин хеле зиёд аст. Ва агар мо дар як фосилаи кӯтоҳ хеле зуд-зуд гузаргоҳҳоро анҷом диҳем, он гоҳ иҷрои диск ба таври назаррас коҳиш хоҳад ёфт. Ва дархостҳои муштариён аз нарасидани захираҳо зарар мебинанд. Онхо барои захирахо мусобика карда, хосилнокии мехнатро кам мекунанд.

Мутаносибан, тавассути pg_stat_bgwriter бо истифода аз майдонҳои муайяншуда мо метавонем шумораи гузаргоҳҳои рӯйдодаро назорат кунем. Ва агар мо дар муддати муайян (дар 10-15-20 дақиқа, дар ним соат), масалан, 3-4-5 нуқтаҳои зиёди назоратӣ дошта бошем, пас ин аллакай мушкилот шуда метавонад. Ва шумо аллакай бояд ба пойгоҳи додаҳо назар кунед, ба конфигуратсия назар кунед, ки чӣ боиси чунин фаровонии гузаргоҳҳо мегардад. Шояд ягон намуди сабти калон идома дорад. Мо аллакай сарбории корро арзёбӣ карда метавонем, зеро мо аллакай графикҳои сарбории корро илова кардаем. Мо аллакай метавонем параметрҳои нуқтаи назоратро тағир диҳем ва боварӣ ҳосил кунем, ки онҳо ба иҷрои дархостҳо таъсири зиёд нарасонанд.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Ман боз ба автовакуум бармегардам, зеро он тавре ки гуфтам, он чизест, ки метавонад ба осонӣ ҳам диск ва ҳам иҷрои дархостро ҷамъ кунад, аз ин рӯ ҳисоб кардани миқдори автовакуум ҳамеша муҳим аст.

Шумораи коргарони автовакуум дар база махдуд аст. Бо нобаёнӣ, онҳо се нафаранд, бинобар ин, агар мо ҳамеша дар базаи маълумот се коргар кор кунем, ин маънои онро дорад, ки автовакууми мо танзим нашудааст, мо бояд маҳдудиятҳоро баланд бардорем, танзимоти автовакуумро аз нав дида бароем ва ба конфигуратсия ворид шавем.
Баҳо додан муҳим аст, ки мо кадом коргарони вакуум дорем. Ё он аз ҷониби корбар оғоз карда шуд, DBA омад ва ба таври дастӣ як навъ чангкашакро оғоз кард ва ин сарборӣ ба вуҷуд овард. Мо як навъ мушкилот дорем. Ё ин шумораи вакуумҳоест, ки ҳисобкунаки транзаксияро мекушоянд. Барои баъзе версияҳои PostgreSQL ин вакуумҳои хеле вазнин мебошанд. Ва онҳо метавонанд ба осонӣ натиҷаро илова кунанд, зеро онҳо тамоми ҷадвалро мехонанд, ҳамаи блокҳои ин ҷадвалро скан мекунанд.

Ва, албатта, давомнокии vacuums. Агар мо чангкашакҳои дарозмуддат дошта бошем, ки муддати тӯлонӣ кор мекунанд, пас ин маънои онро дорад, ки мо бояд бори дигар ба конфигуратсияи вакуум диққат диҳем ва шояд танзимоти онро аз нав дида бароем. Азбаски вакуум дар руи миз муддати дароз (3—4 соат) кор мекунад, вазъият ба амал омада метавонад, вале дар давоми вакти кор кардани чангкашак боз дар миз микдори зиёди каторхои мурда чамъ шуда метавонист. Ва хамин ки чангкашак ба охир расид, вай бояд ин мизро боз чанг кунад. Ва мо ба вазъияте мерасем - холигии беохир. Ва дар ин ҳолат, вакуум аз ӯҳдаи кори худ намебарояд ва ҷадвалҳо тадриҷан ба варам кардани андоза шурӯъ мекунанд, гарчанде ки ҳаҷми маълумоти муфид дар он бетағйир боқӣ мемонад. Аз ин рӯ, дар вақти чангкашакҳои тӯлонӣ, мо ҳамеша ба конфигуратсия назар мекунем ва кӯшиш мекунем, ки онро оптимизатсия кунем, аммо ҳамзамон, то иҷрои дархостҳои муштарӣ осеб надиҳад.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Имрӯзҳо амалан ягон насби PostgreSQL вуҷуд надорад, ки репликаи ҷараёнро надошта бошад. Репликатсия раванди интиқоли додаҳо аз устод ба реплика мебошад.

Репликатсия дар PostgreSQL тавассути сабти транзаксия анҷом дода мешавад. Устод гузориши транзаксияро тавлид мекунад. Сабти транзаксия тавассути пайвасти шабакавӣ ба реплика мегузарад ва он дар реплика дубора тавлид мешавад. Ин оддӣ аст.

Мувофиқи он, намуди pg_stat_replication барои назорат кардани ақибмонии такрорӣ истифода мешавад. Аммо на ҳама чиз бо вай оддӣ аст. Дар версияи 10, манзара якчанд тағйирот ворид карда шуд. Аввалан, баъзе майдонҳо номгузорӣ шудаанд. Ва баъзе майдонҳо илова карда шуданд. Дар версияи 10 майдонҳо пайдо шуданд, ки ба шумо имкон медиҳанд, ки ақибмонии такрориро дар сонияҳо ҳисоб кунед. Ин хеле қулай аст. Пеш аз версияи 10, имкон дошт, ки қафомонии такрориро дар байтҳо ҳисоб кунед. Ин хосият дар версияи 10 боқӣ мемонад, яъне шумо метавонед он чизеро, ки барои шумо қулайтар аст, интихоб кунед - ақибмонӣ бо байтҳоро ҳисоб кунед ё ақибнишиниро дар сонияҳо ҳисоб кунед. Бисёр одамон ҳардуро мекунанд.

Аммо бо вуҷуди ин, барои баҳодиҳии ақибмонии такрорӣ, шумо бояд мавқеи сабтро дар транзаксия донед. Ва ин мавқеъҳои сабти транзаксия маҳз дар намуди pg_stat_replication мебошанд. Нисбатан, мо метавонем бо истифода аз функсияи pg_xlog_location_diff() дар гузориши транзаксия ду нуктаро гирем. Делтаро байни онҳо ҳисоб кунед ва ақибмонии такрориро дар байтҳо ба даст оред. Ин хеле қулай ва оддӣ аст.

Дар версияи 10, ин функсия pg_wal_lsn_diff() номгузорӣ шуд. Умуман, дар ҳама функсияҳо, намудҳо ва утилитаҳое, ки калимаи "xlog" пайдо шудааст, он бо арзиши "wal" иваз карда шуд. Ин ҳам ба намудҳо ва ҳам ба функсияҳо дахл дорад. Ин чунин як навоварӣ аст.

Илова бар ин, дар версияи 10, сатрҳо илова карда шуданд, ки махсусан ақибнишиниро нишон медиҳанд. Инҳо ақибмонии навиштан, ақибмонии оббозӣ, таъхири такрорӣ мебошанд. Яъне ин чизҳоро назорат кардан муҳим аст. Агар мо бубинем, ки мо таъхири такрорӣ дорем, пас мо бояд тафтиш кунем, ки чаро он пайдо шуд, аз куҷо пайдо шуд ва мушкилотро ислоҳ кунем.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Қариб ҳама чиз бо меъёрҳои система мувофиқ аст. Вақте ки ҳама гуна мониторинг оғоз меёбад, он бо ченакҳои система оғоз меёбад. Ин ихтиёрдории протсессорҳо, хотира, своп, шабака ва диск мебошад. Аммо, бисёр параметрҳо ба таври нобаёнӣ вуҷуд надоранд.

Агар ҳама чиз бо раванди такрорӣ мувофиқ бошад, пас дар коркарди диск мушкилот вуҷуд дорад. Чун қоида, таҳиягарони мониторинг маълумотро дар бораи интиқол илова мекунанд. Он метавонад дар iops ё байт бошад. Аммо онҳо дар бораи таъхир ва истифодаи дастгоҳҳои диск фаромӯш мекунанд. Инҳо параметрҳои муҳимтаре мебошанд, ки ба мо имкон медиҳанд, ки дискҳои мо то чӣ андоза пурбор ва суст будани онҳоро арзёбӣ кунем. Агар мо таъхири баланд дошта бошем, ин маънои онро дорад, ки баъзе мушкилот бо дискҳо вуҷуд доранд. Агар мо истифодаи баланд дошта бошем, ин маънои онро дорад, ки дискҳо мубориза намебаранд. Инҳо нисбат ба интиқол беҳтар хусусиятҳо мебошанд.

Гузашта аз ин, ин оморро инчунин аз системаи файлии /proc гирифтан мумкин аст, чуноне ки барои коркардкунандагони такрорӣ анҷом дода мешавад. Ман намедонам, ки чаро ин маълумот ба мониторинг илова карда намешавад. Бо вуҷуди ин, муҳим аст, ки инро дар мониторинги худ дошта бошед.

Ин ба интерфейсҳои шабака дахл дорад. Маълумот дар бораи интиқоли шабака дар пакетҳо, бо байтҳо мавҷуд аст, аммо бо вуҷуди ин дар бораи таъхир ва маълумот дар бораи истифода маълумот нест, гарчанде ки ин маълумоти муфид аст.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Ҳар як мониторинг камбудиҳо дорад. Ва новобаста аз он, ки шумо чӣ гуна мониторинг гиред, он ҳамеша ба баъзе меъёрҳо мувофиқат намекунад. Аммо бо вуҷуди ин, онҳо инкишоф меёбанд, хусусиятҳои нав ва чизҳои нав илова карда мешаванд, аз ин рӯ чизеро интихоб кунед ва онро анҷом диҳед.

Ва барои ба итмом расонидани он, шумо бояд ҳамеша тасаввуроте дошта бошед, ки омори пешниҳодшуда чӣ маъно дорад ва чӣ гуна онҳоро барои ҳалли мушкилот истифода бурдан мумкин аст.

Ва чанд нуктаи муҳим:

  • Шумо бояд ҳамеша мавҷудиятро назорат кунед ва панели идоракунӣ дошта бошед, то шумо зуд арзёбӣ кунед, ки ҳама чиз бо пойгоҳи додаҳо мувофиқ аст.
  • Шумо ҳамеша бояд тасаввуроте дошта бошед, ки муштариён бо базаи шумо чӣ кор мекунанд, то муштариёни бадро нест кунед ва онҳоро нест кунед.
  • Муҳим аст, ки чӣ гуна ин муштариён бо маълумот кор мекунанд. Шумо бояд дар бораи сарбории кори худ тасаввуроте дошта бошед.
  • Баҳо додан муҳим аст, ки ин сарбории кор бо ёрии кадом дархостҳо чӣ гуна ташаккул меёбад. Шумо метавонед дархостҳоро арзёбӣ кунед, шумо метавонед онҳоро оптимизатсия кунед, онҳоро рефактор кунед ва барои онҳо индексҳо созед. Ин хеле муҳим аст.
  • Равандҳои пасзамина метавонанд ба дархостҳои муштарӣ таъсири манфӣ расонанд, аз ин рӯ назорат кардан муҳим аст, ки онҳо захираҳои аз ҳад зиёдро истифода намебаранд.
  • Метрикҳои система ба шумо имкон медиҳанд, ки нақшаҳои миқёс ва баланд бардоштани қобилияти серверҳои худро таҳия кунед, аз ин рӯ пайгирӣ ва арзёбии онҳо низ муҳим аст.

Асосҳои мониторинги PostgreSQL. Алексей Лесовский

Агар шумо ба ин мавзӯъ таваҷҷӯҳ дошта бошед, пас шумо метавонед ин пайвандҳоро пайгирӣ кунед.
http://bit.do/stats_collector - ин ҳуҷҷати расмии коллексияи омор аст. Тавсифи ҳама намуди оморӣ ва тавсифи ҳамаи соҳаҳо мавҷуд аст. Шумо метавонед онҳоро хонед, фаҳмед ва таҳлил кунед. Ва дар асоси онҳо, графикҳои худро созед ва онҳоро ба мониторинги худ илова кунед.

Намунаи дархостҳо:
http://bit.do/dataegret_sql
http://bit.do/lesovsky_sql

Ин анбори корпоративии мо ва худи ман аст. Онҳо дорои саволҳои намунавӣ мебошанд. Дар он чо аз иитихоб* аз силсила ягон дархост нест. Аллакай дархостҳои омода бо пайвастшавӣ мавҷуданд, ки бо истифода аз функсияҳои ҷолиб, ки ба шумо имкон медиҳанд, ки рақамҳои хомро ба арзишҳои хондашаванда ва қулай табдил диҳед, яъне инҳо байтҳо, вақт мебошанд. Шумо метавонед онҳоро интихоб кунед, ба онҳо нигаред, таҳлил кунед, ба мониторинги худ илова кунед, мониторинги худро дар асоси онҳо созед.

Саволҳои шумо

Савол: Шумо гуфтед, ки шумо брендҳоро таблиғ намекунед, аммо ман то ҳол кунҷковам - шумо дар лоиҳаҳои худ чӣ гуна панелҳоро истифода мекунед?
Ҷавоб: Он фарқ мекунад. Чунин мешавад, ки мо ба назди муштарӣ меоем ва ӯ аллакай мониторинги худро дорад. Ва мо ба муштарӣ маслиҳат медиҳем, ки ба мониторинги онҳо чӣ илова кардан лозим аст. Вазъияти бадтарин бо Zabbix аст. Зеро он қобилияти сохтани графикҳои TopN надорад. Мо худамон истифода мебарем Окметр, зеро мо бо ин бачаҳо оид ба мониторинг машварат мекардем. Онҳо PostgreSQL-ро дар асоси мушаххасоти техникии мо назорат карданд. Ман лоиҳаи ҳайвоноти шахсии худро менависам, ки маълумотро тавассути Prometheus ҷамъоварӣ мекунад ва онро дар он медиҳад Графана. Вазифаи ман ин аст, ки содиркунандаи шахсии худро дар Prometheus эҷод кунам ва сипас ҳама чизро дар Grafana иҷро кунам.

Савол: Оё аналогҳои гузоришҳои AWR ё ... ҷамъоварӣ вуҷуд доранд? Оё шумо дар бораи чунин чизе медонед?
Ҷавоб: Бале, ман медонам, ки AWR чист, ин чизи аҷиб аст. Дар айни замон як қатор велосипедҳо мавҷуданд, ки тақрибан модели зеринро амалӣ мекунанд. Дар фосилаи муайяни вақт, баъзе хатҳои асосӣ ба ҳамон PostgreSQL ё ба анбори алоҳида навишта мешаванд. Шумо метавонед онҳоро дар Интернет ҷустуҷӯ кунед, онҳо дар он ҷо ҳастанд. Яке аз таҳиягарони чунин чизе дар форуми sql.ru дар риштаи PostgreSQL нишастааст. Шумо метавонед ӯро дар он ҷо дастгир кунед. Бале, чунин чизхо хастанд, онхоро истифода бурдан мумкин аст. Плюс дар он pgCenter Ман инчунин чизе менависам, ки ба шумо имкон медиҳад, ки ҳамин корро кунед.

PS1 Агар шумо postgres_exporter-ро истифода баред, кадом панели идоракуниро истифода мебаред? Якчанд нафари онҳо вуҷуд доранд. Онҳо аллакай кӯҳна шудаанд. Шояд ҷомеа як қолаби навсозӣ эҷод кунад?

PS2 pganalyze хориҷ карда шуд, зеро он як пешниҳоди хусусии SaaS мебошад, ки ба мониторинги иҷроиш ва пешниҳодҳои танзими автоматикӣ тамаркуз мекунад.

Танҳо корбарони сабтиномшуда метавонанд дар пурсиш иштирок кунанд. даромад, Лутфан.

Кадом мониторинги мустақилонаи postgresql (бо панели идоракунӣ) шумо беҳтарин мешуморед?

  • 30,0%Zabbix + иловаҳо аз Алексей Лесовский ё zabbix 4.4 ё 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 як SaaS хусусӣ аст - ман онро нест карда наметавонам1

  • 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

10 корбар овоз доданд. 26 корбар худдорӣ карданд.

Манбаъ: will.com

Илова Эзоҳ