{"id":84082,"date":"2020-06-05T07:42:28","date_gmt":"2020-06-05T05:42:28","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/linux-tuning-to-improve-postgresql-performance-ilya-kosmodemyanskij"},"modified":"2020-06-05T07:42:28","modified_gmt":"2020-06-05T05:42:28","slug":"linux-tuning-to-improve-postgresql-performance-ilya-kosmodemyanskij","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/linux-tuning-to-improve-postgresql-performance-ilya-kosmodemyanskij","title":{"rendered":"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>2015. aasta Ilya Kosmodemyansky ettekande \"Linuxi h\u00e4\u00e4lestamine PostgreSQL-i j\u00f5udluse parandamiseks\" t\u00f5lgendus<\/p>\n<p><\/p>\n<p>K\u00e4esolev v\u00e4ljav\u00f5te: Tahan m\u00e4rkida, et see ettekande kuup\u00e4ev on novembrist 2015 \u2014 on m\u00f6\u00f6dunud rohkem kui 4 aastat ja palju on muutunud. Ettekandes k\u00e4sitletav versioon 9.4 ei ole enam toetatud. Viimase 4 aasta jooksul on ilmunud 5 uut PostgreSQL versiooni ja 15 Linuxi kerneli versiooni. Kui siin kohtasid \u00fcmber kirjutada, saaks l\u00f5ppkokkuv\u00f5ttes hoopis teine ettekande. Kuid siinkohal on k\u00e4sitletud p\u00f5hi h\u00e4\u00e4lestust Linuxi jaoks PostgreSQL\u2019i jaoks, mis on endiselt aktuaalne.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/8292f74a7d004a9c13ff5f1393816340.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"V0M6YwWmMYM\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/V0M6YwWmMYM\/hqdefault.jpg\" alt=\"M\u00e4ngi videot\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Minu nimi on Ilya Kosmodemyanskiy. T\u00f6\u00f6dan ettev\u00f5ttes PostgreSQL-Consulting. Ja n\u00fc\u00fcd hakkan r\u00e4\u00e4kima natuke sellest, mida teha Linuxiga, seoses andmebaasidega \u00fcldiselt ja PostgreSQL\u2019iga konkreetselt, sest p\u00f5him\u00f5tted on \u00fcsna sarnased.<\/p>\n<p><\/p>\n<p>Millest me r\u00e4\u00e4gime? Kui suhtlete PostgreSQL\u2019iga, peate mingil m\u00e4\u00e4ral olema UNIXi administraator. Mida see t\u00e4hendab? Kui v\u00f5rrelda Oracle\u2019it ja PostgreSQL\u2019i, siis Oracle\u2019iga peab olema 80% DBA andmebaasi administraator ja 20% Linuxi administraator.<\/p>\n<p><\/p>\n<p>PostgreSQL\u2019iga on natuke keerulisem. PostgreSQL\u2019i puhul tuleb oluliselt paremini m\u00f5ista, kuidas Linux t\u00f6\u00f6tab. Ja samal ajal tuleb vahel kiiremini joosta, sest viimasel ajal on k\u00f5ik \u00fcsna aktiivselt uuendatud. Uusi kernelit on v\u00e4lja antud ning uut funktsionaalsust on ilmunud, j\u00f5udlus paraneb jne. <\/p>\n<p><\/p>\n<p>Miks me r\u00e4\u00e4gime Linuxist? Mitte sellep\u00e4rast, et oleme Linuxi konverentsil Peterburis, vaid seet\u00f5ttu, et t\u00e4nap\u00e4eval on \u00fcks k\u00f5ige p\u00f5hjendatum operatsioonis\u00fcsteem andmebaaside k\u00e4itamiseks \u00fcldiselt ja PostgreSQL\u2019iga konkreetselt \u2014 see on Linux. Kuna FreeBSD, kahjuks, areneb mingis v\u00e4ga kummalises suunas. Ja tekivad probleemid nii j\u00f5udluse kui ka paljude muude aspektidega. <strong>PostgreSQL j\u00f5udlus Windowsis \u2014 see on t\u00e4iesti eraldi karm teema, kuna Windowsil ei ole sellist jagatud m\u00e4lu nagu UNIXil, ja PostgreSQL s\u00f5ltub sellest, sest see on mitme protsessi s\u00fcsteem.<\/strong> <\/p>\n<p><\/p>\n<p>Ja eksootika nagu Solaris, arvan, huvitab v\u00e4hem inimesi, seega liikume edasi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/990133933bd1816895fc8f73edaf900e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kaasaegse Linuxi distributsiooni puhul on \u00fcle 1 000 syctl parameetri, s\u00f5ltuvalt sellest, kuidas tuum koguda. Kui vaatame veel erinevaid mutreid, siis on veel palju viise, kuidas midagi kohandada. On failis\u00fcsteemi parameetreid, kuidas mountida. Kui k\u00fcsimusi, kuidas k\u00e4ivitada: mida BIOSis sisse l\u00fclitada, kuidas riistvara seadistada jne.<\/p>\n<p><\/p>\n<p>See on v\u00e4ga mahukas teema, millest v\u00f5iks r\u00e4\u00e4kida mitu p\u00e4eva, mitte \u00fche l\u00fchikese ettekande jooksul, kuid ma keskendun n\u00fc\u00fcd olulistele asjadele, kuidas v\u00e4ltida neid l\u00f5kse, mis kindlasti ei v\u00f5imalda teil h\u00e4sti hallata andmebaasi Linuxis, kui te neid ei paranda. Oluline on m\u00e4rkida, et paljud parameetrid on vaikimisi seades, mis ei ole andmebaasi jaoks \u00f5iged. Ehkki vaikimisi t\u00f6\u00f6tamine v\u00f5ib olla halb v\u00f5i mitte t\u00f6\u00f6tada \u00fcldse. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/189f6497c795a5e5fd5b458edfadb22f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Millised on traditsioonilised tuning targets Linuxis? Ma arvan, et kuna te k\u00f5ik tegeleme Linuxi haldamisega, siis ei ole targets'i seletamine eriti vajalik. <\/p>\n<p><\/p>\n<p>V\u00f5imalik on h\u00e4\u00e4lestada:<\/p>\n<p><\/p>\n<ul>\n<li>CPU.<\/li>\n<li>M\u00e4lu.<\/li>\n<li>Salvestus.<\/li>\n<li>Muud. Sellest r\u00e4\u00e4gime l\u00f5pus. Isegi n\u00e4iteks sellised parameetrid nagu energias\u00e4\u00e4stupoliitika v\u00f5ivad ettearvamatu ja mitte k\u00f5ige meeldivama m\u00f5juga olla j\u00f5udlusele. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/92916aadaf123a3f836bed3a2c1bd95a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Milline on PostgreSQL spetsiifika ja andmebaaside \u00fcldiselt? Probleem on selles, et ei saa h\u00e4\u00e4lestada m\u00f5nda eraldi mutrit ja vaadata, et j\u00f5udlus on oluliselt paranenud. <\/p>\n<p><\/p>\n<p>Jah, selliseid mutreid on, kuid andmebaas on keeruline asi. See suhtleb k\u00f5igi serveri ressurssidega ja eelistab nendega t\u00e4ielikult suhelda. Kui vaatate Oracle'i kaasaegseid soovitusi selle kohta, kuidas kasutada hostimisoperatsioonis\u00fcsteemi, on see nagu anekdoot Mongoli kosmonautidest \u2013 toida koera ja \u00e4ra puuduta midagi. Andke andmebaasile k\u00f5ik ressursid, andmebaas lahendab k\u00f5ik ise. <\/p>\n<p><\/p>\n<p>\u00dcldiselt on PostgreSQL puhul sama olukord. Erinevus seisneb selles, et andmebaas ei oska k\u00f5iki ressursse ise haarata, seega tuleb Linuxi tasemel m\u00f5ned asjad ise korraldada. <\/p>\n<p><\/p>\n<p>Peamine idee ei ole valida \u00fchte sihtkohta ja alustada selle tuunimist, n\u00e4iteks m\u00e4lu, CPU v\u00f5i midagi sarnast, vaid anal\u00fc\u00fcsida t\u00f6\u00f6koormust ja p\u00fc\u00fcda maksimaalselt parandada l\u00e4bilaskev\u00f5imet, et meie andmebaas saaks t\u00f5husalt l\u00e4bi viia laengu, mille head programmeerijad meile kokku on pannud, sealhulgas ka meie kasutajad. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/2db6c11a6f612b8aecccfe126be4fd7f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siin on pilt, et selgitada, mis see on. On Linuxi operatsioonis\u00fcsteemi puhvers\u00e4lu, jagatud m\u00e4lu ja PostgreSQL jagatud puhvers\u00e4lu. PostgreSQL t\u00f6\u00f6tab erinevalt Oracle'ist otse ainult tuuma puhvers\u00e4luga, st et leht peab l\u00e4bima tuumapuhvers\u00e4lu, et j\u00f5uda tema jagatud m\u00e4lu, ja sama olukord kehtib ka tagasi. <\/p>\n<p><\/p>\n<p>Selle s\u00fcsteemi all asuvad kettad. Ma joonistasin need ketasteks. Tegelikult v\u00f5ib seal olla RAID-kontroller jne. <\/p>\n<p><\/p>\n<p>Ja see sisse- ja v\u00e4ljund, mingil moel, toimub l\u00e4bi selle asja.<\/p>\n<p><\/p>\n<p>PostgreSQL on klassikaline andmebaas. Seal on lehed sees. Ja kogu sisse- ja v\u00e4ljund toimub lehtede abil. Me toome lehed m\u00e4llu. Ja kui midagi ei juhtunud, lihtsalt lugesime neid, siis j\u00e4rk-j\u00e4rgult need kaduvad sellest puhvers\u00e4lust, jagatud puhvers\u00e4list ja j\u00f5uavad tagasi kettale. <\/p>\n<p><\/p>\n<p>Kui me kuskil midagi asendasime, siis m\u00e4rgistatakse kogu leht kui m\u00e4\u00e4rdunud. Ma olen need sinise v\u00e4rviga esile t\u00f5stnud. See t\u00e4hendab, et see leht peab olema s\u00fcnkroniseeritud plokkidehoidjaga. St kui me tegime selle m\u00e4\u00e4rdunuks, siis tegime kirje WAL-is. Ja mingil kaunil hetkel saabus n\u00e4htus nimega kontrollpunkt. Ja sellesse logisse salvestati teave selle kohta, et see on saabunud. See t\u00e4hendab, et k\u00f5ik m\u00e4\u00e4rdunud lehed, mis seal sel hetkel jagatud puhvers\u00e4list olid, s\u00fcnkroniseeriti kettal hoidmisega fsync kaudu tuumapuhvers\u00e4lu abil.<\/p>\n<p><\/p>\n<p>Miks see tehakse? Kui meil kaob toide, siis me ei saa olukorda, kus k\u00f5ik andmed on kadunud. P\u00fcsiv m\u00e4lu, millest me k\u00f5ik oleme kuulnud, on seni andmebaaside teoorias \u2013 see on helge tulevik, mille poole me loomulikult p\u00fcrgime ja see meeldib meile, kuid praegu elavad nad endiselt 20 aastat minevikus. Ja loomulikult peab selle \u00fcle j\u00e4lgima.<\/p>\n<p><\/p>\n<p>Ja \u00fclesanne maksimeerida l\u00e4bilaskvust on h\u00e4\u00e4lestada k\u00f5igis neis etappides, et k\u00f5ik see liiguks kiiresti edasi-tagasi. Jagatud m\u00e4lu on peamiselt lehek\u00fcljekassa. PostgreSQL-is s\u00f5idame p\u00e4ringu select midagi seal, see t\u00f5i need andmed kettalt v\u00e4lja. Need j\u00f5udsid jagatud puhverdesse. Seega, et see t\u00f6\u00f6taks paremini, peab olema palju m\u00e4lu.<\/p>\n<p><\/p>\n<p>Selleks, et see k\u00f5ik toimiks h\u00e4sti ja kiiresti, peate k\u00f5igis etappides operatsioonis\u00fcsteemi \u00f5igesti seadistama. Ja valima tasakaalustatud riistvara, sest kui teil on m\u00f5nes kohas tasakaaluh\u00e4ire, siis v\u00f5ite teha v\u00e4ga palju m\u00e4lu, kuid see teenindatakse ebapiisava kiiruseni. <\/p>\n<p><\/p>\n<p>Ja vaatame iga\u00fcht neist punktidest.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/fe031218be39cd727f3a76b22563e101.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuna neid lehek\u00fclgi tuleb kiiremini edasi-tagasi liigutada, tuleb saavutada j\u00e4rgnev:<\/p>\n<p><\/p>\n<ul>\n<li>Esiteks, tuleb t\u00f5husamalt m\u00e4lu kasutada.<\/li>\n<li>Teiseks, see \u00fcleminek, kui lehek\u00fcljed m\u00e4lust kettale j\u00f5uavad, peab olema t\u00f5husam.<\/li>\n<li>Ja kolmandaks, peab olema head kettad. <\/li>\n<\/ul>\n<p><\/p>\n<p>Kui teil on 512 GB RAM-i <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/et\/server\/dts-dronten\/\"   title=\"serveris\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2587\">serveris<\/a> ja see k\u00f5ik suundub l\u00f5puks SATA k\u00f5vakettale ilma igasuguse vahem\u00e4lu, siis muutub kogu andmebaasiserver mitte lihtsalt k\u00f5rvitsaks, vaid k\u00f5rvitsaks SATA liidesega. Te seisate selle ees otseselt. Ja miski ei p\u00e4\u00e4sta teid.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/6630e445c96e94621ae670bc4aee8492.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mida puudutab esimest punkti m\u00e4lu osas, siis on kolm asja, mis v\u00f5ivad elu oluliselt keerulisemaks muuta. <\/p>\n<p><\/p>\n<p>Esimene neist on NUMA. NUMA on asi, mis on loodud j\u00f5udluse parandamiseks. Olenevalt t\u00f6\u00f6koormusest v\u00f5ib erinevaid asju optimeerida. Ja oma t\u00e4nases kujus ei ole see selliste rakenduste, nagu andmebaas, mis intensiivselt kasutavad lehek\u00fclje vahem\u00e4lu jagatud puhverdes, v\u00e4ga hea. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/8fcf2af82a96bd1ac52fb0a36bf0b0b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>L\u00fchidalt. Kuidas m\u00f5ista, et NUMA-ga on midagi valesti? Teil on mingi ebameeldiv m\u00fcrin, \u00fcht\u00e4kki on m\u00f5ni CPU \u00fclekoormatud. Samal ajal anal\u00fc\u00fcsite PostgreSQL-is p\u00e4ringuid ja n\u00e4ete, et seal pole midagi sellist. Need p\u00e4ringud ei tohiks olla nii intensiivsed CPU kasutamise osas. Seda saab kaua j\u00e4lgida. Lihtsam on alates algusest kasutada \u00f5iget soovitust, kuidas NUMA PostgreSQL-i seadistada.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/424b8677e5ae1382b9b49b288e045a3f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mis tegelikult juhtub? NUMA - see on Mittet\u00e4iuslik M\u00e4luelektroonika. Miks see on? Teil on CPU, mille k\u00f5rval on tema kohaliku m\u00e4lu. Ja see m\u00e4lu interconnects v\u00f5ib tuua m\u00e4lu teistelt CPU-delt.<\/p>\n<p><\/p>\n<p>Kui k\u00e4ivitate <code>numactl --hardware<\/code>, siis saate sellise suure lehe. Muuhulgas on seal valdkond distances. Seal on numbrid \u2013 10-20, midagi sellist. Need numbrid ei ole midagi muud kui h\u00fcpikute arv, et see eemal asuv m\u00e4lu \u00fchendada ja kohapeal kasutada. \u00dcldiselt on see hea m\u00f5te. See kiirendab j\u00f5udlust teatud koormuste puhul.<\/p>\n<p><\/p>\n<p>Kujutage n\u00fc\u00fcd ette, et teie \u00fcks CPU \u00fcritab esmalt kasutada oma kohalikku m\u00e4lu, seej\u00e4rel proovib ta interconnecti kaudu tuua endale muud m\u00e4lu millegi tarbeks. Ja sellele CPU-le j\u00f5uab kogu teie PostgreSQL page cache \u2013 k\u00f5ik need paar gigabaiti. Te alati saate halvimat juhtumit, sest CPU-l on tavaliselt otseselt selles m\u00e4lumoodulis v\u00e4he m\u00e4lu. Ja kogu m\u00e4lu, mis teenindatakse, liigub l\u00e4bi nende interconnectide. See on aeglane ja kurb. Ja teil on protsessor, mis teenindab seda s\u00f5lme, pidevalt \u00fcle koormatud. Ja selle m\u00e4lu juurdep\u00e4\u00e4su aeg on halb, aeglane. See on see olukord, mida te ei soovi, kui kasutate seda andmebaasi tarbeks. <\/p>\n<p><\/p>\n<p>Seet\u00f5ttu on \u00f5igem variant andmebaasiks, et Linuxi operatsioonis\u00fcsteem ei teadliks sellest, mis seal toimub. Et ta p\u00f6\u00f6rdub m\u00e4lu poole nii, nagu ta tavaliselt p\u00f6\u00f6rdub. <\/p>\n<p><\/p>\n<p>Miks nii? Tundub, et peaks olema vastupidi. See juhtub \u00fchel lihtsal p\u00f5hjusel, et m\u00e4lu on meil page cache jaoks palju vaja \u2013 k\u00fcmneid, sadu gigabaiate. <\/p>\n<p><\/p>\n<p>Ja kui me oleme k\u00f5ik selle eraldanud ja oma andmed seal vahem\u00e4lusse salvestanud, siis on kasu vahem\u00e4lu kasutamisest oluliselt suurem kui see kasu, mis tuleneb sellisest nutikast m\u00e4lu k\u00e4sitsemisest. Ja me v\u00f5idame seel\u00e4bi v\u00f5rreldamatult rohkem, v\u00f5rreldes sellega, et oleksime efektiivsemad m\u00e4lu k\u00e4sitsemisel NUMA abil.<\/p>\n<p><\/p>\n<p>Niisiis, hetkel on siin kaks l\u00e4henemist, kuni valgus tulevikus ei saabu ja andmebaas ei oska ise aru saada, millistel CPU-del ta t\u00f6\u00f6tab ja kust tuleb midagi laadida. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/218513d407ea77320057d57b447c54d3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><strong>Seet\u00f5ttu on \u00f5ige l\u00e4henemine \u2013 \u00fcldse NUMA v\u00e4lja l\u00fclitada<\/strong>, n\u00e4iteks taask\u00e4ivitamisel. Enamiku juhtumite puhul on kasum nii suur, et k\u00fcsimus, kuidas paremini, ei teki \u00fcldse. <\/p>\n<p><\/p>\n<p>On teine v\u00f5imalus. Me kasutame seda sagedamini kui esimest, sest kui klient tuleb meie tehnilisse tugi, siis on serveri taask\u00e4ivitamine tema jaoks suur asi. Tema seal ju \u00e4ri k\u00e4ib. Probleemid NUMA t\u00f5ttu on nad kogenud. Seet\u00f5ttu p\u00fc\u00fcame neid v\u00e4lja l\u00fclitada v\u00e4hem invasiivsete meetoditega kui taask\u00e4ivitamine, kuid siin tuleb ettevaatlikult kontrollida, et see t\u00f5esti v\u00e4lja l\u00fclitatud oleks. Sest, nagu kogemus n\u00e4itab, kui me vanemalt PostgreSQL NUMA protsessilt v\u00e4lja l\u00fclitame, on see hea, kuid kindlasti pole see vajalik, et see t\u00f6\u00f6le hakkaks. Tuleb kontrollida ja vaadata, et see t\u00f5eliselt v\u00e4lja l\u00fclitatakse. <\/p>\n<p><\/p>\n<p>On olemas hea postitus Robert Haasilt. Ta on \u00fcks PostgreSQL'i pannijaid. \u00dcks v\u00f5tme arendajatest k\u00f5ikide madala taseme komponente. Ja kui sellele postitusele viidatud linkidele minna, siis seal on mitmeid v\u00e4rvikate lugusid sellest, kuidas NUMA elusid keeruliseks tegi. Vaadake, uurige s\u00fcsteemiadministraatori kontrollnimekirja, mida serveris seadistada, et meie andmebaas t\u00f6\u00f6taks h\u00e4sti. Need seaded tuleb kirja panna ja kontrollida, sest vastasel juhul ei l\u00e4he h\u00e4sti. <\/p>\n<p><\/p>\n<p>T\u00f5mban t\u00e4helepanu sellele, et see puudutab k\u00f5iki seadeid, millest ma r\u00e4\u00e4gin. Kuid tavaliselt kogutakse andmebaasid master-slave re\u017eiimis t\u00f5rgeteta t\u00f6\u00f6kindluse jaoks. \u00c4rge unustage need seaded slave'i sisse viia, sest \u00fchel kaunil hetkel juhtub teil katastroof ja te l\u00fclitate \u00fcle slave'ile, kes saab masteriks. <\/p>\n<p><\/p>\n<p>H\u00e4daolukorras, kui k\u00f5ik on v\u00e4ga halb, heliseb teie telefon pidevalt ja juhataja jookseb suure kepiga, siis pole teil aega m\u00f5elda, et kontrollida. Ja tulemused v\u00f5ivad olla v\u00e4ga kurvad.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/d2fdda7ad4570554b0e134758295f83e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>J\u00e4rgmine punkt on huge pages. Huge pages'i on keeruline eraldi testida, ja selles pole ka m\u00f5tet, kuigi on olemas benhmarke, mis oskavad seda teha. Need leiavad kergesti Google'is. <\/p>\n<p><\/p>\n<p>Mis on m\u00f5te? Teil on mitte eriti kallis server, milles on palju RAM-i, n\u00e4iteks \u00fcle 30 GB. Te ei kasuta huge pages'i. See t\u00e4hendab, et teil on kindlasti \u00f5ige \u00fcleliigne m\u00e4lu kasutamine. Ja see \u00fcleliigne on kaugeltki mitte mugav. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/28c3c94390a6afef815f712ac9189c2d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Miks see nii on? Mis toimub? Operatsioonis\u00fcsteem jaotab m\u00e4lu v\u00e4ikesteks t\u00fckkideks. See on mugav ja ajalooliselt v\u00e4lja kujunenud. Ja kui detaljidesse laskuda, peab operatsioonis\u00fcsteem edastama virtuaalsed aadressid f\u00fc\u00fcsilistesse aadressitesse. See protsess ei ole k\u00f5ige lihtsam, seega talletab operatsioonis\u00fcsteem selle operatsiooni tulemuse Translation Lookaside Bufferis (TLB).<\/p>\n<p><\/p>\n<p>Ja kuna TLB on vahem\u00e4lu, siis sellistes olukordades tekivad k\u00f5ik sellele omased probleemid. Esiteks, kui teil on v\u00e4ga palju j\u00f5udlusse m\u00e4lu ja see on k\u00f5ik jaotatud v\u00e4ikesteks t\u00fckkideks, siis muutub see vahem\u00e4lu v\u00e4ga suureks. Ja kui vahem\u00e4lu on suur, on selle t\u00f5ttu otsimine aeglasem. \u00dcleminek on suur ja see ise v\u00f5tab ruumi, st, et operatiivm\u00e4lu tarbib midagi ebavajalikku. See on esimene punkt. <\/p>\n<p><\/p>\n<p>Teiseks \u2013 mida suurem muutub vahem\u00e4lu sellises olukorras, seda suurem on t\u00f5en\u00e4osus, et teil tekib cache misses. Ja selle vahem\u00e4lu efektiivsus langeb kiiresti koos selle suuruse suurenemisega. Seet\u00f5ttu on operatsioonis\u00fcsteemides v\u00e4lja m\u00f5eldud lihtne l\u00e4henemine. Linuxis on see juba ammu kasutusel. FreeBSD-s on see mitte nii kaua tagasi ilmunud. Kuid me r\u00e4\u00e4gime Linuxist. See on huge pages.<\/p>\n<p><\/p>\n<p>Siinkohal tuleb m\u00e4rkida, et huge pages m\u00f5tteviit oli algselt edendatud kogukondade poolt, kuhu kuulusid Oracle ja IBM, st andmebaasi tootjad m\u00f5tlesid t\u00f5siselt, et see v\u00f5iks olla kasulik, sealhulgas andmebaaside jaoks. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/39a24536929fbcf551d8ba1c8e7faf32.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuidas seda PostgreSQL-iga siduda? Esiteks peavad Linuxi ydas olema lubatud huge pages.<\/p>\n<p><\/p>\n<p>Teiseks, need peavad olema selgelt m\u00e4\u00e4ratud sysctl parameetriga \u2013 kui palju neid on. Numbrid siinkohal p\u00e4rinevad m\u00f5nelt vanalt serverilt. Saate arvutada, kui palju teile ligikaudu shared buffers on, et huge pages sinna mahuksid. <\/p>\n<p><\/p>\n<p>Ja kui kogu server on p\u00fchendatud PostgreSQL-ile, siis hea l\u00e4htepunkt on kas anda 25% operatiivm\u00e4last jagatud pufferitele v\u00f5i 75%, kui olete kindel, et teie andmebaas mahub kindlasti sellesse 75% suurusesse. Esimene l\u00e4htepunkt. Ja arvutage, kui teil on 256 GB operatiivm\u00e4lu, siis vastavalt on 64 GB jagatud pufferite jaoks. Arvutage veidi marginaaliga \u2013 milline peaks see arv olema.<\/p>\n<p><\/p>\n<p>Enne versiooni 9.2 (kui ma ei eksi, alates versioonist 8.2) oli v\u00f5imalik kolmanda osapoole raamatukogu abil PostgreSQL \u00fchendada huge pages'iga. Ja seda tuleb alati teha. Esiteks, teil on vajalik, et kernel oskaks huge pages'i \u00f5igesti jagada. Teiseks, rakendusel, mis nendega t\u00f6\u00f6tab, peab olema v\u00f5imalus neid kasutada. Ilma selle v\u00f5imaluseta ei saa see nendest kasu. Kuna PostgreSQL jagas m\u00e4lu system 5 stiilis, sai seda teha libhugetlbfs abil \u2014 see on selle raamatukogu t\u00e4isnimi.<\/p>\n<p><\/p>\n<p>Versioonis 9.3 paranes PostgreSQL-i j\u00f5udlus m\u00e4lu haldamisel ja loobuti system 5 m\u00e4lu jagamise meetodist. K\u00f5ik olid v\u00e4ga r\u00f5\u00f5msad, sest muidu proovisid sa k\u00e4ivitada kahte PostgreSQL-i instantsi samal masinal ja \u00fctles, et mul on jagatud m\u00e4lu v\u00e4he. Ja selgus, et sysctl tuleb muuta. Ja seal on selline sysctl, et peab veel taask\u00e4ivitama jne. \u00dches\u00f5naga, k\u00f5ik olid r\u00f5\u00f5msad. Kuid mmap-i m\u00e4lu jagamine rikkus huge pages'i kasutamist. Enamik meie kliente kasutab suuri jagatud puhvreid. Ja me soovisime tungivalt mitte minna versioonile 9.3, kuna seal tekkis \u00fclekattega probleemide hulk.<\/p>\n<p><\/p>\n<p>Aga siiski t\u00e4helepanu sellele probleemile p\u00f6\u00f6ras community ja versioonis 9.4 t\u00f6\u00f6tati seda v\u00e4ga h\u00e4sti \u00fcmber. Ja versioonis 9.4 ilmus parameeter postgresql.conf-is, kus saab lubada try, on v\u00f5i off.<\/p>\n<p><\/p>\n<p>Try on k\u00f5ige ohutum parameeter. PostgreSQL-i k\u00e4ivitamisel, kui see jagab jagatud m\u00e4lu, p\u00fc\u00fcab ta endale vastava m\u00e4lu saada huge pages-ist. Ja kui see ei \u00f5nnestu, siis tagasi tavalisel jagamisel. Kui teie s\u00fcsteem on FreeBSD v\u00f5i Solaris, siis saate panna try, see on alati ohutu. <\/p>\n<p><\/p>\n<p>Kui on on, siis see lihtsalt ei k\u00e4ivitu, kui ei suutnud huge pages'ist jagada. Siin s\u00f5ltub k\u00f5ik teie eelistustest. Kuid kui teil on seadistatud try, siis kontrollige, et teil on t\u00f5epoolest see, mis peab olema eraldatud, sest seal on palju viga tegemise ruumi. Praegu t\u00f6\u00f6tab see funktsioon ainult Linuxis.<\/p>\n<p><\/p>\n<p>Veel t\u00e4helepanuts, enne kui l\u00e4heme edasi. Transparent huge pages ei kehti hetkel PostgreSQL jaoks. Ta ei saa neid normaalselt kasutada. Ja transparent huge pages puhul, kui on vajalik suur osa jagatud m\u00e4lu, tulevad eelised esile ainult v\u00e4ga suurte mahtude korral. Kui teil on terabaiti m\u00e4lu, siis see v\u00f5ib m\u00e4ngida rolli. Aga kui r\u00e4\u00e4gime tavap\u00e4rastest rakendustest, kus teie masinas on 32, 64, 128, 256 GB m\u00e4lu, siis tavalised huge pages on ok ja transparent tuleb lihtsalt v\u00e4lja l\u00fclitada. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/18cf3ace8876e55b42e66f617a24f1bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja viimane asi, mis on m\u00e4luga seotud, ei ole otseselt seotud l\u00e4bilaskev\u00f5imega, vaid v\u00f5ib elu oluliselt halvendada. Kogu l\u00e4bilaskvus kannatab selle all, et server vahetab pidevalt. <\/p>\n<p><\/p>\n<p>Ja see on mitmel hetkel v\u00e4ga ebameeldiv. Peamine ebameeldivus tuleneb sellest, et kaasaegsete kernide k\u00e4itumine erineb veidi vanematest Linuxi kernidest. Ja see on asi, mille peale astuda on \u00fcsna ebameeldiv, kuna kui r\u00e4\u00e4gime swap'iga t\u00f6\u00f6tamisest, l\u00f5ppeb see OOM-killeri ebamugava sissetuleku t\u00f5ttu. Ja OOM-killer, mis ei tule \u00f5igeaegselt ja l\u00f5petab PostgreSQL-i, on ebameeldiv. Sellest saavad teada k\u00f5ik, st viimane kasutaja. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/c7c46ff0f4cd8cfcfb21978dd1da4c08.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mis toimub? Sul on seal suur hulk operatiivm\u00e4lu, k\u00f5ik t\u00f6\u00f6tab h\u00e4sti. Kuid mingil p\u00f5hjusel server hangub swap'is ja see p\u00f5hjustab viivitusi. Tundub, et m\u00e4lu on piisavalt, aga see juhtub ikkagi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/24d19929f1506cd9768a836095a24dfb.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Varem soovitasime vm.swappiness nulli seadistada, st swap v\u00e4lja l\u00fclitada. Varem tundus, et 32 GB operatiivm\u00e4lu ja vastavad jagatud buferid on tohutu hulk. Swap'i peamine eesm\u00e4rk on anda ruumi, kuhu visata tuum, kui oleme kukkunud. Ja see ei t\u00e4itnud enam oma eesm\u00e4rki. Ja mida sa selle tuumaga p\u00e4rast teed? See on juba selline \u00fclesanne, kus ei ole eriti selge, miks swap'i sellises suuruses \u00fcldse vaja on. <\/p>\n<p><\/p>\n<p>Kuid kaasaegsemates, st kolmandates versioonides on k\u00e4itumine muutunud. Ja kui seadistada swap nulli, st v\u00e4lja l\u00fclitada, siis varem v\u00f5i hiljem, isegi kui m\u00f5ned m\u00e4luressursid on alles, tuleb OOM-killer teie juurde, et tappa k\u00f5ige intensiivsemad ressursikasutajad. Sest ta arvab, et sellise t\u00f6\u00f6koormuse korral on meil j\u00e4\u00e4nud veel v\u00e4he m\u00e4lu ja me l\u00e4heme \u00fcle piiri, st mitte s\u00fcsteemset protsessi tapma, vaid midagi v\u00e4hem olulist. Selleks v\u00e4hem oluliseks osutub intensiivne jagatud m\u00e4lu tarbija, nimelt postmaster. Ja p\u00e4rast seda on hea, kui andmebaasi ei pea taastama. <\/p>\n<p><\/p>\n<p>Seet\u00f5ttu on n\u00fc\u00fcd vaikimisi, kui ma \u00f5igesti m\u00e4letan, enamikus jaotustes umbes 6, st millal hakata kasutama swap'i s\u00f5ltuvalt sellest, kui palju m\u00e4lu on j\u00e4\u00e4nud. <strong>Me soovitame praegu seadistada vm.swappiness = 1, sest see praktiliselt l\u00fclitab selle v\u00e4lja, kuid ei too kaasa selliseid efekte, nagu ootamatult saabunud OOM-killer ja k\u00f5ik see, mis on igasuguste probleemide p\u00f5hjus.<\/strong> <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/20f01dca0aff819abcbb687cea69ac74.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mis edasi? Kui r\u00e4\u00e4gime andmebaaside j\u00f5udlusest ja j\u00e4rk-j\u00e4rgult j\u00f5uame ketaste juurde, haaravad k\u00f5ik oma pead. Sest t\u00f5de, et ketas on aeglane ja m\u00e4lu kiire, on k\u00f5igile lapsep\u00f5lvest tuttav. Ja k\u00f5ik teavad, et andmebaasis tekivad probleemid ketta j\u00f5udlusega.<\/p>\n<p><\/p>\n<p>Peamine probleem PostgreSQL-i j\u00f5udlusega, mis on seotud checkpoints spikes'idega, ei tulene mitte sellest, et ketas on aeglane. See tuleneb pigem sellest, et m\u00e4lu ja ketta l\u00e4bilaskev\u00f5ime ei ole tasakaalus. Samas v\u00f5ivad nad olla tasakaalustamata erinevates kohtades. PostgreSQL ei ole seadistatud, operatsioonis\u00fcsteem ei ole seadistatud, riistvara ei ole seadistatud ja riistvara ei ole \u00f5ige. Ja seda probleem ei esine ainult siis, kui k\u00f5ik toimub nii nagu peab, st kas koormust ei ole v\u00f5i seadistused ja riistvara on h\u00e4sti valitud. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/c4d841f9ed48bb5bb1b29bd9f189753f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mis see on ja kuidas see v\u00e4lja n\u00e4eb? Tavaliselt astuvad inimesed, kes t\u00f6\u00f6tavad PostgreSQL-iga, sellesse valdkonda korduvalt. Selgitan. Nagu ma \u00fctlesin, teeb PostgreSQL perioodiliselt kontrollpunkte, et m\u00e4\u00e4rdunud lehed jagatud m\u00e4lust kettale salvestada. Kui meil on suur jagatud m\u00e4lu maht, siis hakkab kontrollpunkt intensiivselt kettale m\u00f5ju avaldama, kuna see salvestab need lehed fsync'iga. Need j\u00f5uavad kernel-buffrisse ja kirjutatakse ketastele fsync'i abil. Ja kui selle mahud on suured, siis v\u00f5ime j\u00e4lgida ebameeldivat efekti, nimelt v\u00e4ga k\u00f5rget ketaste kasutust.<\/p>\n<p><\/p>\n<p>Siin on mul kaks pilti. Selgitan, mis need on. Need on kaks ajaliselt korreleeritud graafikut. Esimene graafik \u2013 see on ketta kasutus. Siin ulatub see antud hetkel peaaegu 90%-ni. Kui teie andmebaas ja f\u00fc\u00fcsilised kettad koos RAID-kontrolleriga saavutavad 90% kasutust, siis on see halvad uudised. See t\u00e4hendab, et veel natuke ja j\u00f5uame 100%-ni ning sisend-v\u00e4ljund peatub. <\/p>\n<p><\/p>\n<p>Kui teil on kettas\u00fcsteem, siis on seal veidi teine lugu. See s\u00f5ltub sellest, kuidas see on konfigureeritud, milline s\u00fcsteem see on jne. <\/p>\n<p><\/p>\n<p>Samas on siin konfigureeritud graafik PostgreSQL-i sisemise vaate p\u00f5hjal, mis n\u00e4itab, kuidas kontrollpunkt toimub. Roheline v\u00e4rv n\u00e4itab, kui palju bufreid, neid m\u00e4\u00e4rdunud lehti, on sel hetkel selle kontrollpunkti jaoks s\u00fcnkroniseerimiseks saabunud. Ja see on peamine, mida siin teadma peame. N\u00e4eme, et meil on siin palju lehti saabunud ja mingil hetkel saime 'plaati' otsa, st kirjutasime-kirjutasime, siin on ilmselgelt kettas\u00fcsteem v\u00e4ga h\u00f5ivatud. Ja meie kontrollpunkt avaldab kettale suurt m\u00f5ju. Ideaalis peaks olukord v\u00e4lja n\u00e4gema pigem nii, et meil oleks siin v\u00e4hem kirjutatud. Ja saame seadistustega selle parandada, et tulevikus niimoodi ei juhtuks. St kasutus on v\u00e4ike, kuid midagi me siin kirjutame. <\/p>\n<p><\/p>\n<p>Mida tuleb teha, et see probleem \u00fcletada? Kui teie andmebaasi IO on peatunud, t\u00e4hendab see, et k\u00f5ik kasutajad, kes tulid oma p\u00e4ringute t\u00e4itmiseks, peavad ootama. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/3efac5fe79443c32f56ec8da2f418116.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kui vaadata Linuxi perspektiivist, siis kui olete valinud hea riistvara, seadistanud selle \u00f5igesti ja konfigureerinud PostgreSQL, et see teeks need checkpoints harvem, ja hajutaks need ajaliselt, siis j\u00e4\u00e4te Debian'i vaikeseadistuste juurde. Enamiku Linuxi distributsioonide puhul on pilt j\u00e4rgmine: vm.dirty_ratio=20, vm.dirty_background_ratio=10.<\/p>\n<p><\/p>\n<p>Mida see t\u00e4hendab? Tuumast 2.6 alates ilmus \u00fcks demon, mis tegeleb andmete t\u00fchjendamisega. Pdglush s\u00f5ltuvalt sellest, kes mida kasutab, tegeleb taustal m\u00e4\u00e4rdunud lehtede eemaldamisega kernel buffer'ist ja eemaldab need, kui on h\u00e4davajalik t\u00fchjendada m\u00e4\u00e4rdunud lehti, kui taustal t\u00fchjendamine enam ei aita. <\/p>\n<p><\/p>\n<p>Millal algab taust? Kui 10% kogu serveri RAM-ist on m\u00e4\u00e4rdunud lehtedega kernel buffer'is, siis kutsutakse spetsiaalne funktsioon t\u00fchjendamiseks taustal. Miks see on taustal? See v\u00f5tab parameterina, kui palju lehti t\u00fchjendada. N\u00e4iteks t\u00fchjendab N lehte. Ja m\u00f5neks ajaks see asi magab. Siis tuleb see j\u00e4lle ja t\u00fchjendab veel mingi arvu lehti. <\/p>\n<p><\/p>\n<p>See on \u00e4\u00e4rmiselt lihtne lugu. Siin on \u00fclesanne nagu basseinis, kus \u00fchte torusse voolab vett ja teisest voolab v\u00e4lja. Meil on checkpoint ja kui ta on saatnud v\u00e4he m\u00e4\u00e4rdunud lehti eemaldamiseks, siis imenduvad need j\u00e4rk-j\u00e4rgult kernel buffer'i pgflush'i kaudu. <\/p>\n<p><\/p>\n<p>Kui need m\u00e4\u00e4rdunud lehed j\u00e4tkuvalt kuhjuvad, kuhjuvad nad kuni 20%, p\u00e4rast seda on OS prioriteet need \u00e4ra t\u00fchjendada, sest v\u00f5ite kaotada toite ja meil l\u00e4heb k\u00f5ik halvasti. N\u00e4iteks v\u00f5ime kaotada need andmed. <\/p>\n<p><\/p>\n<p>Mis on trikk? <strong>Trikk seisneb selles, et need parameetrid, 20 ja 10% kogu masina RAM-ist, on t\u00e4iesti kohutavad diskis\u00fcsteemi l\u00e4bilaskvuse seisukohalt, mis teil on.<\/strong> <\/p>\n<p><\/p>\n<p>Kujutage ette, et teil on 128 GB RAM. 12,8 GB j\u00f5uab teie diskis\u00fcsteemi. Ja milline iganes vahem\u00e4lu v\u00f5i maatriks teil seal on, ei suuda nad seda taluda. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/1e4bab2fad7d3a05dc76cdd9d153f46c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><strong>Seet\u00f5ttu soovitame need numbrid kohe seadistada vastavalt teie RAID-kontrolleri v\u00f5imalustele.<\/strong> Mul on siin kohe soovitus kontrolleri jaoks, millel on 512 MB vahem\u00e4lu. <\/p>\n<p><\/p>\n<p>Arvatakse, et k\u00f5ik on v\u00e4ga lihtne. V\u00f5ite vm.dirty_background seadistada baitides. Need seaded t\u00fchistavad kaks eelnevat. Kas defaukti j\u00e4rgi, v\u00f5i aktiveeritakse need, mis on baitides, ja siis t\u00f6\u00f6tavad need, mis on baitides. Aga kuna ma olen DBA-konsultant ja t\u00f6\u00f6tan erinevate klientidega, siis p\u00fc\u00fcan ma tagada, et k\u00f5ik oleks stabiilne, seega, kui baitides, siis baitides. Keegi ei ole andnud mingisugust garantiid, et hea admin ei lisa serverisse m\u00e4lu, ei taask\u00e4ivita teda, ja numbrid j\u00e4\u00e4vad samaks. Lihtsalt arvutage need numbrid, et garanteerida, et k\u00f5ik mahub sinna sisse. <\/p>\n<p><\/p>\n<p>Mis juhtub, kui te ei mahu sisse? Mul on kirjas, et igasugune flushing peatub efektiivselt, aga tegelikult on see metafoor. Operatsioonis\u00fcsteemil on t\u00f5sine probleem \u2013 tal on palju r\u00e4pane lehti, seega peatub efektiivselt see IO, mis teie klientide poolt genereeritud, st. kui rakendus saadab SQL-p\u00e4ringu andmebaasi, ootab see. Iga IO sinna \u2013 on madalaimal prioriteedil, sest andmebaas on kinni checkpointis. Ja millal ta selle l\u00f5petab, pole selge. Ja kui olete j\u00f5udnud mitte-taustalisse flushing'usse, siis see t\u00e4hendab, et kogu teie IO on selle t\u00f6\u00f6ga h\u00f5ivatud. Ja seni, kuni see ei l\u00f5peta, ei tee te midagi. <\/p>\n<p><\/p>\n<p>Siin on veel kaks olulist punkti, mis \u00fcletavad selle ettekande piire. Need seaded peavad vastama postgresql.conf seadetega, st. checkpointide seadistustega. Ja teie diskis\u00fcsteem peab olema \u00f5igesti seadistatud. <strong>Kui teil on RAID-kate, siis sellel peaks olema aku.<\/strong> Inimesed ostavad RAIDi hea k\u00e4tiga ilma akuta. <strong>Kui teil on SSD RAIDis, siis need peaks olema serveri t\u00fc\u00fcpi, seal peaks olema kondensaatorid.<\/strong> Siin on p\u00f5hjalik kontrollnimekiri. Selle lingi kaudu on mu ettekannet, kuidas konfigureerida disk perfomance'i PostgreSQL-is. Seal on k\u00f5ik need kontrolle. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/0ca13d550cb9eec4163f886467b2b3ea.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mis veel v\u00f5ib elu keeruliseks muuta? Need on kaks parameetrit. Need on suhteliselt uued. Need v\u00f5ivad erinevates rakendustes olla vaikimisi sissel\u00fclitatud. Ja need v\u00f5ivad keeruliseks muuta elu mitte v\u00e4hem, kui nad on valesti sisse l\u00fclitatud. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/35aa98d67ff1f089a751a5fd808bd1b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>On kaks suhteliselt uut funktsiooni. Need on juba ilmunud kolmandates kernites. Need on sched_migration_cost nanosekundites ja sched_autogroup_enabled, mis vaikimisi on \u00fcks. <\/p>\n<p><\/p>\n<p>Ja kuidas nad elu rikuvad? Mis on sched_migration_cost? Linuxi ajakava v\u00f5ib protsessi migreerida \u00fchest CPU-st teise. Ja PostgreSQL jaoks, mis t\u00e4idab p\u00e4ringuid, on migreerimise p\u00f5hjustamine teisele CPU-le t\u00e4iesti arusaamatu. Operatsioonis\u00fcsteemi seisukohalt, kui vahetate aknaid OpenOffice'i ja terminali vahel, siis see v\u00f5ib-olla on hea, kuid <strong>andmebaasi jaoks \u2013 see on v\u00e4ga halb.<\/strong> <strong>Seet\u00f5ttu on m\u00f5istlik poliitika seada migration_cost m\u00f5neks suureks v\u00e4\u00e4rtuseks, v\u00e4hemalt paar tuhat nanosekundit.<\/strong> <\/p>\n<p><\/p>\n<p>Mida see scheduler\u2019i jaoks t\u00e4hendab? Ta peab arvestama, et selle aja jooksul on see protsess endiselt kuum. T. e. kui teil on m\u00f5ni pikk tehing, mis millegagi kaua tegeleb, siis scheduler saab sellest aru. Ta arvab, et seni, kuni see ajavahemik ei ole m\u00f6\u00f6das, ei ole m\u00f5tet seda protsessi mitte kuhugi migreerida. Kui protsess sel ajal midagi teeb, siis ei migreerita seda kuhugi, vaid ta l\u00f5petab rahulikult selle CPU-l, mis talle m\u00e4\u00e4ratud. Ja tulemus on suurep\u00e4rane. <\/p>\n<p><\/p>\n<p>Teine aspekt on autogroup. Oleks hea idee spetsiifiliste t\u00f6\u00f6koormuste jaoks, mis ei ole seotud kaasaegsete andmebaasidega \u2013 r\u00fchmitada protsessid vastavalt sellele virtuaalsele terminalile, mille alt nad on k\u00e4ivitatud. See on mugav m\u00f5ningate \u00fclesannete jaoks. <strong>Praktikas on PostgreSQL mitme protsessiga s\u00fcsteem prefork\u2019iga, mis k\u00e4ivitatakse \u00fchest terminalist. Teil on lock writer, checkpoint ja k\u00f5ik teie kliendip\u00e4ringud r\u00fchmitatakse \u00fche ajakava alla, \u00fche CPU alla. Ja nad ootavad seal rahulikult, kuni see vabastatakse, et \u00fcksteisele segada ja kauem oma ressursse kasutada. See on lugu, mis on sellise koormuse korral t\u00e4iesti ebavajalik ja seet\u00f5ttu tuleb see v\u00e4lja l\u00fclitada.<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/55e829d1c1b69b7f6eaf5fc89dad30d3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Minu kolleeg Alexey Lesovski tegi teste lihtsa pgbench'iga, kus ta suurendas migration_cost v\u00e4\u00e4rtust ja l\u00fclitas autogroup v\u00e4lja. <strong>Halva riistvara korral oli erinevus peaaegu 10%<\/strong>. Postgresi postituslistis toimub arutelu, kus inimesed toovad tulemusi selle kohta, kuidas sarnased muutused p\u00e4ringu kiirus <strong>m\u00f5jutasid 50%<\/strong>. Selliseid lugusid on p\u00e4ris palju.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/b3d1983ec2a37f8b85129c93f2373644.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja l\u00f5petuseks vooluharjumuste poliitika. H\u00e4sti, et n\u00fc\u00fcd saab Linuxit kasutada s\u00fclearvutis. Ja see eeldab, et see s\u00e4\u00e4stab aku energiat. Kuid ootamatult selgub, et serveris v\u00f5ib see samuti juhtuda. <\/p>\n<p><\/p>\n<p>Veelgi enam, kui rentite servereid m\u00f5nelt hostitajalt, siis on \"head\" <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/et\/\"   title=\"hostitajad\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1200\">hostitajad<\/a> ei hoolitse selle eest, et teie j\u00f5udlus oleks parem. Nende \u00fclesanne on tagada, et nende riistvara oleks maksimaalselt efektiivne. Seet\u00f5ttu v\u00f5ivad nad vaikimisi oma operatsioonis\u00fcsteemis lubada s\u00fclearvuti energias\u00e4\u00e4sture\u017eiimi.<\/p>\n<p><\/p>\n<p><strong>Kui kasutate andmebaasi serveris, mille koormus on k\u00f5rge, siis teie valikuks on acpi_cpufreq + performance. Isegi ondemandiga hakkavad juba probleemid tekkima.<\/strong> <\/p>\n<p><\/p>\n<p>Intel_pstate on juba veidi teine draiver. Praegu eelistatakse seda, kuna see on uuem ja t\u00f6\u00f6tab paremini.<\/p>\n<p><\/p>\n<p>Ja seega governor ainult performance. Ondemand, powersave ja k\u00f5ik muu \u2013 see ei ole teie jaoks. <\/p>\n<p><\/p>\n<p>PostgreSQL explain analyze tulemused v\u00f5ivad erineda mitme j\u00e4rgu v\u00f5rra, kui lubate powersave, kuna teie all oleva andmebaasi CPU ajakava on t\u00e4iesti ettearvamatu.<\/p>\n<p><\/p>\n<p>Need asjad v\u00f5ivad olla vaikimisi sisse l\u00fclitatud. Vaadake hoolikalt \u2013 kas need on vaikimisi sisse l\u00fclitatud. See v\u00f5ib olla t\u00f5eliselt suur probleem. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Linuxi h\u00e4\u00e4lestamine PostgreSQLi j\u00f5udluse parandamiseks. Ilya Kosmodemyanskiy\" src=\"\/wp-content\/uploads\/2020\/06\/ef32dafd9c8ea3403dc31c34ee2b5da8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja l\u00f5puks tahaksin t\u00e4nada meie DBA meeskonna PosgreSQL-Consulting, eriti Maks Bogu ja Aleksei Lesovsky, kes iga p\u00e4ev sellel alal vaeva n\u00e4evad. Me p\u00fc\u00fcame meie klientide jaoks teha k\u00f5ik v\u00f5imaliku, et see toimiks h\u00e4sti. Siin on see nagu lennuohutuse juhistes. K\u00f5ik on kirjutatud verega. Iga mutter avastatakse mingi probleemi k\u00e4igus. Jagame r\u00f5\u00f5muga koos teiega.<\/p>\n<p><\/p>\n<p>K\u00fcsimused:<\/p>\n<p><\/p>\n<p><em>Ait\u00e4h! Kui n\u00e4iteks ettev\u00f5te soovib kokku hoida ja paigutada andmebaasi ning rakenduse loogika samale serverile v\u00f5i kui ettev\u00f5te j\u00e4rgib moes suundi mikroteenuste arhitektuuris, kus PostgreSQL t\u00f6\u00f6tab konteineris. Mis on trikk? Sysctl m\u00f5jutavad globaalselt kogu tuuma. Ma ei ole kuulnud, et sysctl kuidagi virtualiseeritaks, et need toimiksid konteineris eraldi. Ainult cgroup ja seal on kontroll ainult osa kohta. Kuidas sellega elada? V\u00f5i kui soovite j\u00f5udlust, siis k\u00e4ivitage PostgreSQL eraldi f\u00fc\u00fcsilisel serveril ja optimeerige seda?<\/em><\/p>\n<p><\/p>\n<p>Me vastasime teie k\u00fcsimusele umbes kolme erineva viisi kaudu. Kui jutt ei ole raua serverist, mida saab seadistada jne, siis v\u00f5tke rahulikult, k\u00f5ik t\u00f6\u00f6tab h\u00e4sti ilma nende seadistusteta. Kui teil tekib koormus, mis n\u00f5uab neid seadistusi, siis j\u00f5uate raua serverini varem, kui nende seadistusteni.<\/p>\n<p><\/p>\n<p>Mis on probleem? Kui see on virtuaalmasin, siis on t\u00f5en\u00e4oliselt palju probleeme, n\u00e4iteks see, et paljuski virtuaalmasinate kettas on ebaj\u00e4rjekindel latentsus. Isegi kui ketaste ribalaius on hea, siis \u00fcks eba\u00f5nnestunud sisend-v\u00e4ljundoperatsiooni tehing, mis ei m\u00f5juta keskmist ribalaiust, mis juhtus hetkel checkpoin'is v\u00f5i WAL'i kirjutamisel, p\u00f5hjustab andmebaasile t\u00f5siseid probleeme. Ja te m\u00e4rkate seda varem, kui te nendesse probleemidesse takerduda. <\/p>\n<p><\/p>\n<p>Kui teil on NGINX samal serveril, siis on ka sama probleem. Ta v\u00f5itleb jagatud m\u00e4luga. Ja te ei j\u00f5ua kunagi siinkohal kirjeldatud probleemideni.<\/p>\n<p><\/p>\n<p>Aga teisest k\u00fcljest, m\u00f5ned neist parameetritest on teile ikkagi olulised. N\u00e4iteks, seadistage sysctl'is dirty_ratio, et see ei oleks nii hull \u2013 see aitab sellegipoolest. Igal juhul on teil suhe kettaga. Ja see toimub vale mustri j\u00e4rgi. Need on vaikimisi parameetrid, mida ma n\u00e4itasin. Ja igal juhul on parem need muuta. <\/p>\n<p><\/p>\n<p>NUMA-ga v\u00f5ivad olla probleemid. VmWare t\u00f6\u00f6tab n\u00e4iteks NUMA-ga h\u00e4sti t\u00e4pselt vastupidiste seadistustega. Siin tuleb valida \u2013 raua server v\u00f5i mitte raua. <\/p>\n<p><\/p>\n<p><em>Mul on k\u00fcsimus, mis on seotud Amazon AWS-iga. Neil on eelkonfigureeritud pildid. \u00dcks neist nimetatakse Amazon RDS-iks. Kas seal on mingeid kohandatud seadistusi nende operatsioonis\u00fcsteemi jaoks?<\/em><\/p>\n<p><\/p>\n<p>Seal on seadistused, kuid need on teistsugused seadistused. Siin seadistame operatsioonis\u00fcsteemi vaatenurgast, kuidas andmebaas seda kasutab. Ja seal on parameetrid, mis m\u00e4\u00e4ravad, kuhu me praegu minema peame, selline shaping. Ehk me vajame nii palju ressursse, me hakkame neid n\u00fc\u00fcd kulutama. P\u00e4rast seda kinnitab Amazon RDS need ressursid, ja sealne j\u00f5udlus kannatab. On eraldi lugusid, kuidas inimesed hakkavad sellega eksperimenteerima. M\u00f5nikord isegi \u00fcsna edukalt. Kuid see ei ole seotud operatsioonis\u00fcsteemi seadistustega. See on nagu pilve h\u00e4kkimine. See on teine lugu.<\/p>\n<p><\/p>\n<p><em>Miks Transparent huge pages ei toimi v\u00f5rreldes Huge TLB-ga?<\/em><\/p>\n<p><\/p>\n<p>Ei toimi. Seda saab selgitada mitmeti. Kuid tegelikult nad lihtsalt ei anna efekti. Mis lugu on PostgreSQLiga? Ta eraldab k\u00e4ivitamisel suure t\u00fcki jagatud m\u00e4lust. Kas nad on transparent v\u00f5i mitte \u2013 see pole absoluutselt oluline. Fakt, et nad eraldatakse k\u00e4ivitamisel, selgitab k\u00f5ike. Ja kui m\u00e4lu on v\u00e4ga palju ja jagatud m\u00e4lu segmenti tuleb \u00fcmber ehitada, siis on Transparent huge pages asjakohased. PostgreSQL eraldab selle lihtsalt k\u00e4ivitamisel tohutu t\u00fcki ja k\u00f5ik, edasi seal midagi erilist ei toimu. Loomulikult v\u00f5ib seda kasutada, kuid on oht saada jagatud m\u00e4lu kahjustusi, kui see p\u00fc\u00fcab midagi uuesti eraldada. PostgreSQL ei tea sellest.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/505108\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 2015 \u0433\u043e\u0434\u0430 \u0418\u043b\u044c\u0438 \u041a\u043e\u0441\u043c\u043e\u0434\u0435\u043c\u044c\u044f\u043d\u0441\u043a\u043e\u0433\u043e &quot;Linux tuning to improve PostgreSQL performance&quot; Disclaimer: \u0417\u0430\u043c\u0435\u0447\u0443 \u0447\u0442\u043e \u0434\u043e\u043a\u043b\u0430\u0434 \u044d\u0442\u043e\u0442 \u0434\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u043e\u044f\u0431\u0440\u0435\u043c 2015 \u0433\u043e\u0434\u0430 \u2014 \u043f\u0440\u043e\u0448\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 4 \u043b\u0435\u0442 \u0438 \u043f\u0440\u043e\u0448\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0432 \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0432\u0435\u0440\u0441\u0438\u044f 9.4 \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0417\u0430 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0435 4 \u0433\u043e\u0434\u0430 \u0432\u044b\u0448\u043b\u043e 5 \u043d\u043e\u0432\u044b\u0445 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 PostgreSQL \u0432\u044b\u0448\u043b\u043e \u0438 15 \u0432\u0435\u0440\u0441\u0438\u0439 \u044f\u0434\u0440\u0430 Linux. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":84083,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-84082","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 2015 \u0433\u043e\u0434\u0430 \u0418\u043b\u044c\u0438 \u041a\u043e\u0441\u043c\u043e\u0434\u0435\u043c\u044c\u044f\u043d\u0441\u043a\u043e\u0433\u043e &quot;Linux tuning to improve PostgreSQL performance&quot; Disclaimer: \u0417\u0430\u043c\u0435\u0447\u0443 \u0447\u0442\u043e \u0434\u043e\u043a\u043b\u0430\u0434 \u044d\u0442\u043e\u0442 \u0434\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u043e\u044f\u0431\u0440\u0435\u043c 2015 \u0433\u043e\u0434\u0430 \u2014 \u043f\u0440\u043e\u0448\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 4 \u043b\u0435\u0442 \u0438 \u043f\u0440\u043e\u0448\u043b\u043e \u043c\u043d\u043e\u0433\u043e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/linux-tuning-to-improve-postgresql-performance-ilya-kosmodemyanskij\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Linux tuning to improve PostgreSQL performance. \u0418\u043b\u044c\u044f \u041a\u043e\u0441\u043c\u043e\u0434\u0435\u043c\u044c\u044f\u043d\u0441\u043a\u0438\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 2015 \u0433\u043e\u0434\u0430 \u0418\u043b\u044c\u0438 \u041a\u043e\u0441\u043c\u043e\u0434\u0435\u043c\u044c\u044f\u043d\u0441\u043a\u043e\u0433\u043e &quot;Linux tuning to improve PostgreSQL performance&quot; Disclaimer: \u0417\u0430\u043c\u0435\u0447\u0443 \u0447\u0442\u043e \u0434\u043e\u043a\u043b\u0430\u0434 \u044d\u0442\u043e\u0442 \u0434\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u043e\u044f\u0431\u0440\u0435\u043c 2015 \u0433\u043e\u0434\u0430 \u2014 \u043f\u0440\u043e\u0448\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 4 \u043b\u0435\u0442 \u0438 \u043f\u0440\u043e\u0448\u043b\u043e \u043c\u043d\u043e\u0433\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/linux-tuning-to-improve-postgresql-performance-ilya-kosmodemyanskij\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-05T05:42:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-05T05:42:28+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Linuxi seadistamine PostgreSQL j\u00f5udluse parandamiseks. Ilya Kosmodemyanski | ProHoster","description":"Ilya Kosmodemyanski 2015. aasta ettekande \"Linuxi seadistamine PostgreSQL j\u00f5udluse parandamiseks\" kokkuv\u00f5te. M\u00e4rgin, et see ettekande kuup\u00e4ev on novembrist 2015 \u2013 m\u00f6\u00f6dunud on \u00fcle 4 aasta ja palju on toimunud.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/linux-tuning-to-improve-postgresql-performance-ilya-kosmodemyanskij","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Linux tuning to improve PostgreSQL performance. \u0418\u043b\u044c\u044f \u041a\u043e\u0441\u043c\u043e\u0434\u0435\u043c\u044c\u044f\u043d\u0441\u043a\u0438\u0439 | ProHoster","og:description":"\u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 2015 \u0433\u043e\u0434\u0430 \u0418\u043b\u044c\u0438 \u041a\u043e\u0441\u043c\u043e\u0434\u0435\u043c\u044c\u044f\u043d\u0441\u043a\u043e\u0433\u043e &quot;Linux tuning to improve PostgreSQL performance&quot; Disclaimer: \u0417\u0430\u043c\u0435\u0447\u0443 \u0447\u0442\u043e \u0434\u043e\u043a\u043b\u0430\u0434 \u044d\u0442\u043e\u0442 \u0434\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u043e\u044f\u0431\u0440\u0435\u043c 2015 \u0433\u043e\u0434\u0430 \u2014 \u043f\u0440\u043e\u0448\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 4 \u043b\u0435\u0442 \u0438 \u043f\u0440\u043e\u0448\u043b\u043e \u043c\u043d\u043e\u0433\u043e.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/linux-tuning-to-improve-postgresql-performance-ilya-kosmodemyanskij","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-05T05:42:28+00:00","article:modified_time":"2020-06-05T05:42:28+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"84082","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:05:32","updated":"2026-02-09 21:38:01","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/84082","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=84082"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/84082\/revisions"}],"predecessor-version":[{"id":159869,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/84082\/revisions\/159869"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/84083"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=84082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=84082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=84082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}