{"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\/sq\/blog\/administrirovanie\/linux-tuning-to-improve-postgresql-performance-ilya-kosmodemyanskij","title":{"rendered":"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Shpjegimi i raportit t\u00eb vitit 2015 nga Ilya Kosmodemyansky &quot;P\u00ebrmir\u00ebsimi i performanc\u00ebs s\u00eb PostgreSQL me tuning t\u00eb Linux-it&quot;<\/p>\n<p><\/p>\n<p>Kujdes: Dua t\u00eb theksoj se ky raport \u00ebsht\u00eb datuar n\u00eb n\u00ebntor t\u00eb vitit 2015 \u2014 kan\u00eb kaluar m\u00eb shum\u00eb se 4 vjet dhe ka kaluar shum\u00eb koh\u00eb. Versioni i trajtuar n\u00eb raportin \u00ebsht\u00eb 9.4, i cili tashm\u00eb nuk mb\u00ebshtetet. Gjat\u00eb k\u00ebtyre 4 viteve jan\u00eb l\u00ebshuar 5 versione t\u00eb reja t\u00eb PostgreSQL dhe 15 versione t\u00eb b\u00ebrtham\u00ebs s\u00eb Linuxit. N\u00ebse do t\u00eb rishkruajm\u00eb k\u00ebto pika, n\u00eb fund do t\u00eb kemi nj\u00eb raport tjet\u00ebr. Por k\u00ebtu \u00ebsht\u00eb trajtuar rregullimi themelor i Linux p\u00ebr PostgreSQL, i cili mbetet aktual edhe tani.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" 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=\"Luaj videon\" 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>M\u00eb quajn\u00eb Ilya Kosmodemyansky. Punoj n\u00eb kompanin\u00eb PostgreSQL-Consulting. Tani do t\u00eb flas pak p\u00ebr at\u00eb se \u00e7far\u00eb t\u00eb b\u00ebjm\u00eb me Linux n\u00eb lidhje me bazat e t\u00eb dh\u00ebnave dhe n\u00eb ve\u00e7anti me PostgreSQL, sepse parimet jan\u00eb mjaft t\u00eb ngjashme.<\/p>\n<p><\/p>\n<p>P\u00ebr \u00e7far\u00eb do t\u00eb flasim? N\u00ebse komunikoni me PostgreSQL, n\u00eb nj\u00eb far\u00eb mase duhet t\u00eb jeni administrator UNIX. \u00c7far\u00eb do t\u00eb thot\u00eb kjo? N\u00ebse e krahasojm\u00eb Oracle dhe PostgreSQL, n\u00eb Oracle duhet t\u00eb jeni 80 % DBA dhe 20 % administrator Linux.<\/p>\n<p><\/p>\n<p>Me PostgreSQL \u00ebsht\u00eb pak m\u00eb e komplikuar. Me PostgreSQL duhet t\u00eb keni nj\u00eb njohuri shum\u00eb m\u00eb t\u00eb mir\u00eb se si funksionon Linux. Dhe p\u00ebr k\u00ebt\u00eb duhet t\u00eb ndjekim zhvillimet, sepse koh\u00ebt e fundit gjith\u00e7ka po azhurnohet n\u00eb m\u00ebnyr\u00eb t\u00eb konsiderueshme. Po l\u00ebshohen b\u00ebrthama t\u00eb reja, po shfaqen funksionalitete t\u00eb reja, performanca p\u00ebrmir\u00ebsohet, etj. <\/p>\n<p><\/p>\n<p>Pse flasim p\u00ebr Linux? Jo sepse jemi n\u00eb konferenc\u00ebn Linux n\u00eb St. Petersburg, por sepse n\u00eb kushte moderne nj\u00eb nga sistemet operative m\u00eb t\u00eb arsyeshme p\u00ebr p\u00ebrdorimin me bazat e t\u00eb dh\u00ebnave, dhe ve\u00e7an\u00ebrisht me PostgreSQL, \u00ebsht\u00eb Linux. Sepse FreeBSD, p\u00ebr fat t\u00eb keq, po zhvillohet n\u00eb nj\u00eb drejtim shum\u00eb t\u00eb \u00e7uditsh\u00ebm. Do t\u00eb ket\u00eb probleme si me performanc\u00ebn, ashtu edhe me shum\u00eb gj\u00ebra t\u00eb tjera. <strong>Performanca e PostgreSQL n\u00eb Windows \u2013 \u00ebsht\u00eb nj\u00eb tem\u00eb e ve\u00e7ant\u00eb e njohur, q\u00eb ndikon n\u00eb faktin se Windows nuk ka at\u00eb memorie t\u00eb ndar\u00eb si n\u00eb UNIX, dhe PostgreSQL \u00ebsht\u00eb shum\u00eb e lidhur me k\u00ebt\u00eb, sepse \u00ebsht\u00eb nj\u00eb sistem me shum\u00eb procese.<\/strong> <\/p>\n<p><\/p>\n<p>Dhe egzotika si Solaris, mendoj se intereson m\u00eb pak njer\u00ebz, prandaj le t\u00eb vazhdojm\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/990133933bd1816895fc8f73edaf900e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb nj\u00eb distribucion modern t\u00eb Linux, ka m\u00eb shum\u00eb se 1,000 parametra syctl, n\u00eb var\u00ebsi t\u00eb m\u00ebnyr\u00ebs se si \u00ebsht\u00eb nd\u00ebrtuar b\u00ebrthama. Gjithashtu, n\u00ebse shikojm\u00eb n\u00eb disa rregulla, ka shum\u00eb m\u00ebnyra p\u00ebr t\u00eb b\u00ebr\u00eb rregullime. Ka parametra t\u00eb sistemeve t\u00eb skedar\u00ebve, si t'i montoni ato. N\u00ebse ka pyetje si t'i aktivizoni: \u00e7far\u00eb t\u00eb aktivizoni n\u00eb BIOS, si t\u00eb konfiguroni harduerin, etj.<\/p>\n<p><\/p>\n<p>Ky \u00ebsht\u00eb nj\u00eb volum shum\u00eb i madh, p\u00ebr t\u00eb cilin mund t\u00eb flitet p\u00ebr disa dit\u00eb dhe jo p\u00ebr nj\u00eb raport t\u00eb shkurt\u00ebr, por tani do t\u00eb ndalem n\u00eb gj\u00ebra t\u00eb r\u00ebnd\u00ebsishme, si t\u00eb shmangni ato ng\u00ebr\u00e7et, t\u00eb cilat me siguri do t\u00eb pengojn\u00eb shk\u00eblqimin e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb Linux, n\u00ebse nuk i korrigjoni. Gjithashtu, nj\u00eb pik\u00eb e r\u00ebnd\u00ebsishme \u00ebsht\u00eb se shum\u00eb nga parametrat e default jan\u00eb t\u00eb nisur n\u00eb konfigurime q\u00eb nuk jan\u00eb t\u00eb p\u00ebrshtatshme p\u00ebr baz\u00ebn e t\u00eb dh\u00ebnave. Pra, n\u00eb m\u00ebnyr\u00eb t\u00eb parazgjedhur do t\u00eb funksionoj\u00eb keq ose nuk do t\u00eb funksionoj\u00eb fare. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/189f6497c795a5e5fd5b458edfadb22f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cilat jan\u00eb objektivat tradicionale t\u00eb rregullimit n\u00eb Linux? Mendoj se pasi t\u00eb gjith\u00eb kan\u00eb t\u00eb b\u00ebjn\u00eb me administrimin e Linux, at\u00ebher\u00eb nuk ka nevoj\u00eb t\u00eb shpjegojm\u00eb shum\u00eb se \u00e7far\u00eb jan\u00eb objektivat. <\/p>\n<p><\/p>\n<p>Mund t\u00eb rregullohet:<\/p>\n<p><\/p>\n<ul>\n<li>CPU.<\/li>\n<li>Memoria.<\/li>\n<li>Ruajtja.<\/li>\n<li>T\u00eb tjera. K\u00ebt\u00eb do ta diskutojm\u00eb n\u00eb fund si nj\u00eb p\u00ebrfundim. Edhe, p\u00ebr shembull, parametrat si politika e kursimit t\u00eb energjis\u00eb mund t\u00eb ndikojn\u00eb n\u00eb performanc\u00eb n\u00eb m\u00ebnyra shum\u00eb t\u00eb papritura dhe jo shum\u00eb t\u00eb k\u00ebndshme. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/92916aadaf123a3f836bed3a2c1bd95a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cila \u00ebsht\u00eb specifika e PostgreSQL dhe e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave p\u00ebrgjith\u00ebsisht? Problemi \u00ebsht\u00eb se nuk mund t\u00eb rregulloni ndonj\u00eb pjes\u00eb t\u00eb ve\u00e7ant\u00eb dhe t\u00eb shikoni n\u00ebse performanca \u00ebsht\u00eb p\u00ebrmir\u00ebsuar ndjesh\u00ebm. <\/p>\n<p><\/p>\n<p>Po, ka pjes\u00eb t\u00eb tilla, por baza e t\u00eb dh\u00ebnave \u00ebsht\u00eb nj\u00eb gj\u00eb komplekse. Ajo ka nd\u00ebrveprim me t\u00eb gjitha burimet q\u00eb ka serveri dhe preferon t\u00eb bashk\u00ebpunoj\u00eb n\u00eb m\u00ebnyr\u00ebn m\u00eb t\u00eb plot\u00eb. N\u00ebse shikoni rekomandimet moderne t\u00eb Oracle p\u00ebr p\u00ebrdorimin e sistemit operativ, do t\u00eb jet\u00eb si n\u00eb anekdot\u00ebn p\u00ebr at\u00eb astronautin mongol \u2013 t\u00eb ushqesh qenin dhe t\u00eb mos prekje asgj\u00eb. Le t\u00eb japim t\u00eb gjitha burimet baz\u00ebs s\u00eb t\u00eb dh\u00ebnave, ajo do t\u00eb rregulloj\u00eb gjith\u00e7ka vet\u00eb. <\/p>\n<p><\/p>\n<p>N\u00eb parim, deri diku situata me PostgreSQL \u00ebsht\u00eb e ngjashme. Diferenca \u00ebsht\u00eb se baza nuk mund t\u00eb marr\u00eb t\u00eb gjitha burimet vet\u00eb, pra ndonj\u00ebher\u00eb duhet t\u00eb rregullohen k\u00ebto gj\u00ebra n\u00eb nivelin e Linux. <\/p>\n<p><\/p>\n<p>Ideja kryesore \u00ebsht\u00eb t\u00eb mos p\u00ebrzgjidhni nj\u00eb objektiv t\u00eb vet\u00ebm dhe t\u00eb filloni ta rregulloni at\u00eb, p\u00ebr shembull, memorie, CPU ose di\u00e7ka t\u00eb ngjashme, por t\u00eb analizoni ngarkes\u00ebn e pun\u00ebs dhe t\u00eb p\u00ebrpiqeni t\u00eb p\u00ebrmir\u00ebsoni maksimalisht kapacitetin p\u00ebr t\u00eb siguruar q\u00eb ngarkesa q\u00eb programuesit e sjellin tek ne, p\u00ebrfshir\u00eb dhe p\u00ebrdoruesit tan\u00eb, kalon sa m\u00eb efektivisht p\u00ebrmes baz\u00ebs son\u00eb t\u00eb t\u00eb dh\u00ebnave. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/2db6c11a6f612b8aecccfe126be4fd7f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja \u00ebsht\u00eb nj\u00eb imazh p\u00ebr t\u00eb shpjeguar se \u00e7far\u00eb \u00ebsht\u00eb kjo. Ka nj\u00eb bufer t\u00eb OS Linux, ka memorie t\u00eb ndar\u00eb dhe ka bufer\u00eb t\u00eb ndar\u00eb t\u00eb PostgreSQL. PostgreSQL, ndryshe nga Oracle, funksionon direkt vet\u00ebm p\u00ebrmes buferit t\u00eb b\u00ebrtham\u00ebs, do t\u00eb thot\u00eb se p\u00ebr t\u00eb kaluar nj\u00eb faqe nga disku n\u00eb memorien e saj t\u00eb ndar\u00eb, ajo duhet t\u00eb kaloj\u00eb p\u00ebrmes buferit t\u00eb b\u00ebrtham\u00ebs dhe p\u00ebrmbi t\u00eb nj\u00ebjt\u00ebn situat\u00eb. <\/p>\n<p><\/p>\n<p>N\u00ebn k\u00ebt\u00eb sistem jetojn\u00eb disk\u00ebt. E kam vizatuar si disk\u00eb. N\u00eb t\u00eb v\u00ebrtet\u00eb, aty mund t\u00eb ket\u00eb nj\u00eb kontrollues RAID, etj. <\/p>\n<p><\/p>\n<p>Dhe ky hyrje-dalje ndodh p\u00ebrmes k\u00ebsaj.<\/p>\n<p><\/p>\n<p>PostgreSQL \u00ebsht\u00eb nj\u00eb baz\u00eb e dh\u00ebnash klasike. Brenda saj ka faqe. T\u00eb gjith\u00eb hyrje-daljet ndodhin p\u00ebrmes faqeve. Ne ngrem\u00eb blloqe n\u00eb memorie p\u00ebrmes faqeve. Dhe n\u00ebse nuk ka ndodhur asgj\u00eb, ne vet\u00ebm i kemi lexuar, ato gradualisht p\u00ebrfundojn\u00eb nga ky kesh, nga bufer\u00ebt e ndar\u00eb dhe rikthehen n\u00eb disk. <\/p>\n<p><\/p>\n<p>N\u00ebse ndryshojm\u00eb di\u00e7ka, e gjith\u00eb faqja sh\u00ebnohet si e ndotur. Un\u00eb i kam sh\u00ebnuar ato k\u00ebtu me ngjyr\u00ebn blu. Dhe kjo do t\u00eb thot\u00eb se kjo faqe duhet t\u00eb sinkronizohet me ruajtjen e bllok\u00ebve. Pra, kur e b\u00ebm\u00eb t\u00eb ndotur, b\u00ebm\u00eb nj\u00eb regjistrim n\u00eb WAL. Dhe n\u00eb nj\u00eb moment t\u00eb shk\u00eblqyer erdhi nj\u00eb fenomen i quajtur checkpoint. Dhe n\u00eb k\u00ebt\u00eb log u regjistrua informacioni se ai erdhi. Kjo do t\u00eb thot\u00eb se t\u00eb gjitha faqet e ndotura q\u00eb ishin k\u00ebtu n\u00eb at\u00eb moment n\u00eb k\u00ebto bufer\u00eb t\u00eb ndar\u00eb u sinkronizuan me diskun e ruajtjes p\u00ebrmes fsync p\u00ebrmes buferit t\u00eb b\u00ebrtham\u00ebs.<\/p>\n<p><\/p>\n<p>P\u00ebrse b\u00ebhet kjo? N\u00ebse na mungon energjia, nuk do ta kemi situat\u00ebn q\u00eb t\u00eb gjitha t\u00eb dh\u00ebnat humbin. Memoria e q\u00ebndrueshme, p\u00ebr t\u00eb cil\u00ebn na kan\u00eb treguar t\u00eb gjith\u00eb, \u00ebsht\u00eb ende teorike n\u00eb bazat e t\u00eb dh\u00ebnave \u2013 kjo \u00ebsht\u00eb e ardhmja e ndritur, n\u00eb t\u00eb cil\u00ebn ne sigurisht q\u00eb synojm\u00eb dhe na p\u00eblqen, por p\u00ebr momentin ato ende jetojn\u00eb 20 vjet mbrapa. Dhe sigurisht, p\u00ebr k\u00ebt\u00eb duhet t\u00eb vigjiloni.<\/p>\n<p><\/p>\n<p>Dhe detyra e maksimalizimit t\u00eb kapacitetit \u00ebsht\u00eb q\u00eb t\u00eb optimizohet n\u00eb t\u00eb gjitha k\u00ebto hapa, q\u00eb t\u00eb gjith\u00eb t\u00eb funksionojn\u00eb shpejt. Memoria e ndar\u00eb \u00ebsht\u00eb kryesisht kesh i faqeve. N\u00eb PostgreSQL d\u00ebrgojm\u00eb nj\u00eb k\u00ebrkes\u00eb select di\u00e7ka aty, ai nxjerr t\u00eb dh\u00ebnat nga disku. Ato kalojn\u00eb n\u00eb bufer\u00ebt e ndar\u00eb. Prandaj, p\u00ebr t\u00eb funksionuar m\u00eb mir\u00eb, duhet t\u00eb ket\u00eb shum\u00eb memorie.<\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb siguruar q\u00eb e gjith\u00eb kjo t\u00eb funksionoj\u00eb mir\u00eb dhe shpejt, ju nevojitet t\u00eb konfiguroni sakt\u00eb n\u00eb \u00e7do hap t\u00eb sistemit operativ. Dhe t\u00eb zgjidhni pajisjet n\u00eb m\u00ebnyr\u00eb t\u00eb balancuar, sepse n\u00ebse ndonj\u00eb vend do t\u00eb ket\u00eb disbalanc\u00eb, mund t\u00eb keni shum\u00eb memorie, por do t\u00eb sh\u00ebrbehet me nj\u00eb shpejt\u00ebsi t\u00eb pamjaftueshme. <\/p>\n<p><\/p>\n<p>Dhe do t\u00eb kalojm\u00eb n\u00eb secilin nga k\u00ebto pika.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/fe031218be39cd727f3a76b22563e101.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb siguruar q\u00eb k\u00ebto faqe t\u00eb udh\u00ebtojn\u00eb m\u00eb shpejt, duhet t\u00eb arrihet e ardhmja:<\/p>\n<p><\/p>\n<ul>\n<li>S\u00eb pari, duhen punuar m\u00eb efikas me memorien.<\/li>\n<li>S\u00eb dyti, duhet t\u00eb jet\u00eb m\u00eb efikase kalimi, kur faqet kalojn\u00eb nga memoria n\u00eb disk.<\/li>\n<li>Dhe, s\u00eb treti, duhen t\u00eb jen\u00eb disqe t\u00eb mira. <\/li>\n<\/ul>\n<p><\/p>\n<p>N\u00ebse keni 512 GB RAM n\u00eb <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/server\/dts-dronten\/\"   title=\"serveri\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2587\">serveri<\/a> dhe e gjith\u00eb kjo p\u00ebrfundon n\u00eb nj\u00eb disk mekanik SATA pa asnj\u00eb kesh, gjithmon\u00eb serveri i baz\u00ebs s\u00eb t\u00eb dh\u00ebnave do t\u00eb shnd\u00ebrrohet n\u00eb nj\u00eb kungull, madje me nj\u00eb nd\u00ebrfaqe SATA. Do t\u00eb jeni t\u00eb detyruar ta p\u00ebrballoni p\u00ebrball\u00eb, dhe asgj\u00eb nuk do t'ju shp\u00ebtoj\u00eb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/6630e445c96e94621ae670bc4aee8492.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sa i p\u00ebrket pik\u00ebs s\u00eb par\u00eb me memorien, ka tre gj\u00ebra q\u00eb mund t\u00eb komplikohet jet\u00ebn. <\/p>\n<p><\/p>\n<p>E para \u00ebsht\u00eb NUMA. NUMA \u00ebsht\u00eb gj\u00eb q\u00eb \u00ebsht\u00eb b\u00ebr\u00eb p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn. N\u00eb var\u00ebsi t\u00eb ngarkes\u00ebs mund t\u00eb optimizoni gj\u00ebra t\u00eb ndryshme. Dhe n\u00eb form\u00ebn e saj t\u00eb tanishme, ajo nuk \u00ebsht\u00eb shum\u00eb e favorshme p\u00ebr aplikacione t\u00eb till\u00eb si baza e t\u00eb dh\u00ebnave, q\u00eb p\u00ebrdorin intensitet t\u00eb lart\u00eb t\u00eb bufer\u00ebve t\u00eb ndar\u00eb t\u00eb keshit t\u00eb faqeve. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/8fcf2af82a96bd1ac52fb0a36bf0b0b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb dy fjal\u00eb. Si ta kuptoni se di\u00e7ka nuk \u00ebsht\u00eb n\u00eb rregull me NUMA? Keni nj\u00eb zhurm\u00eb t\u00eb pad\u00ebshiruar, papritur nj\u00eb CPU \u00ebsht\u00eb i mbingarkuar. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb analizoni k\u00ebrkesat n\u00eb PostgreSQL dhe shihni se nuk ka asgj\u00eb t\u00eb till\u00eb q\u00eb ndodhin. K\u00ebto k\u00ebrkesa nuk duhet t\u00eb konsumojn\u00eb kaq fuqish\u00ebm CPU. \u00cbsht\u00eb e leht\u00eb ta kapni k\u00ebt\u00eb p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb. M\u00eb mir\u00eb \u00ebsht\u00eb t\u00eb p\u00ebrdorni rekomandimin e duhur q\u00eb nga fillimi se si t\u00eb konfiguroni NUMA p\u00ebr PostgreSQL.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/424b8677e5ae1382b9b49b288e045a3f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb ndodh n\u00eb t\u00eb v\u00ebrtet\u00eb? NUMA do t\u00eb thot\u00eb Non-Uniform Memory Access. Q\u00ebllimi i saj \u00ebsht\u00eb? Keni nj\u00eb CPU, pran\u00eb tij \u00ebsht\u00eb memoria e tij lokale. Dhe kjo memorie e nd\u00ebr lidhjeve mund t\u00eb t\u00ebrheq\u00eb memorien nga CPU t\u00eb tjera.<\/p>\n<p><\/p>\n<p>N\u00ebse e aktivizoni <code>numactl --hardware<\/code>, do t'ju dal\u00eb nj\u00eb flet\u00eb e madhe. Nd\u00ebr t\u00eb tjera, do t\u00eb ket\u00eb nj\u00eb fush\u00eb distancash. Do t\u00eb ket\u00eb numra \u2013 10-20, di\u00e7ka e till\u00eb. K\u00ebta numra nuk jan\u00eb asgj\u00eb tjet\u00ebr ve\u00e7se numri i hops p\u00ebr t\u00eb marr\u00eb at\u00eb memorie t\u00eb larg\u00ebt dhe p\u00ebr ta p\u00ebrdorur lokal. N\u00eb thelb, ide e mir\u00eb. Kjo p\u00ebrmir\u00ebson performanc\u00ebn n\u00eb disa ngarkesa.<\/p>\n<p><\/p>\n<p>Imagjinoni se keni nj\u00eb CPU q\u00eb fillimisht p\u00ebrpiqet t\u00eb p\u00ebrdor\u00eb memorjen e tij lokale, pastaj p\u00ebrpiqet t\u00eb t\u00ebrheq\u00eb memorje tjet\u00ebr p\u00ebrmes interkonektiv\u00ebs p\u00ebr ndonj\u00eb q\u00ebllim. Dhe n\u00eb k\u00ebt\u00eb CPU p\u00ebrfundon gjith\u00eb cache-in tuaj t\u00eb faqeve PostgreSQL \u2013 t\u00eb gjitha, disa gigabajt. Ju gjithmon\u00eb merrni rasten m\u00eb t\u00eb keq, sepse zakonisht ka pak n\u00eb k\u00ebt\u00eb moduli t\u00eb memorjes. Dhe e gjith\u00eb memorja q\u00eb sh\u00ebrbehet kalon p\u00ebrmes k\u00ebtyre interkonektiv\u00ebve. K\u00ebshtu q\u00eb ndodhet ngadal\u00eb dhe e trishtuar. Dhe keni nj\u00eb procesor q\u00eb sh\u00ebrben k\u00ebt\u00eb nyje, i ngarkuar vazhdimisht. Dhe koha e aksesit t\u00eb k\u00ebsaj memorjeje \u00ebsht\u00eb e dob\u00ebt, e ngadalshme. Ky \u00ebsht\u00eb nj\u00eb situat\u00eb q\u00eb nuk doni, n\u00ebse e p\u00ebrdorni k\u00ebt\u00eb p\u00ebr nj\u00eb baz\u00eb t\u00eb dh\u00ebnash. <\/p>\n<p><\/p>\n<p>Prandaj, nj\u00eb opsion m\u00eb i drejt\u00eb p\u00ebr nj\u00eb baz\u00eb t\u00eb dh\u00ebnash \u00ebsht\u00eb q\u00eb sistemi operativ Linux t\u00eb mos dij\u00eb fare se \u00e7far\u00eb po ndodh. Q\u00eb ai t\u00eb aksesoj\u00eb memorjen ashtu si\u00e7 do. <\/p>\n<p><\/p>\n<p>Pse k\u00ebshtu? Do t\u00eb dukej se duhet t\u00eb ishte e kund\u00ebrta. Kjo ndodh p\u00ebr nj\u00eb arsye t\u00eb thjesht\u00eb, q\u00eb ne kemi nevoj\u00eb p\u00ebr shum\u00eb memorje p\u00ebr cache-in e faqeve \u2013 dhjet\u00ebra, qindra gigabajt. <\/p>\n<p><\/p>\n<p>Dhe n\u00ebse i kemi ndar\u00eb t\u00eb gjitha k\u00ebto dhe i kemi cached t\u00eb dh\u00ebnat tona atje, p\u00ebrfitimi nga p\u00ebrdorimi i cache do t\u00eb jet\u00eb ndjesh\u00ebm m\u00eb i madh se sa p\u00ebrfitimi nga ky qasje i zgjuar n\u00eb memorje. Dhe n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb do t\u00eb fitojm\u00eb n\u00eb m\u00ebnyr\u00eb t\u00eb paqen\u00eb krahasuar me at\u00eb q\u00eb do t\u00eb ishim m\u00eb eficient n\u00eb qasjen n\u00eb memorje duke p\u00ebrdorur NUMA.<\/p>\n<p><\/p>\n<p>Prandaj, ka dy qasje p\u00ebr momentin, derisa e ardhmja e ndritur t\u00eb ket\u00eb ardhur dhe baza e dh\u00ebnash t\u00eb dij\u00eb vet\u00eb n\u00eb cilat CPU ajo punon dhe nga ku i duhet t\u00eb t\u00ebrheq\u00eb di\u00e7ka. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/218513d407ea77320057d57b447c54d3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><strong>Prandaj, qasja e duhur \u00ebsht\u00eb q\u00eb t\u00eb \u00e7aktivizohet NUMA<\/strong>, p\u00ebr shembull, gjat\u00eb rinisjes. N\u00eb shumic\u00ebn e rasteve, p\u00ebrfitimet jan\u00eb kaq t\u00eb m\u00ebdha sa q\u00eb nuk ka asnj\u00eb pyetje se si \u00ebsht\u00eb m\u00eb mir\u00eb. <\/p>\n<p><\/p>\n<p>Ka nj\u00eb opsion tjet\u00ebr. Ne e p\u00ebrdorim at\u00eb m\u00eb shpesh se sa t\u00eb parin, sepse kur nj\u00eb klient vjen p\u00ebr mb\u00ebshtetje, rinisja e serverit \u00ebsht\u00eb nj\u00eb \u00e7\u00ebshtje e madhe. Ai ka biznes q\u00eb funksionon. Dhe ai p\u00ebrballet me probleme p\u00ebr shkak t\u00eb NUMA. Prandaj ne p\u00ebrpiqemi ta \u00e7aktivizojm\u00eb n\u00eb m\u00ebnyra m\u00eb pak invazive se sa rinisja, por k\u00ebtu duhet t\u00eb kontrolloni se \u00e7far\u00eb \u00ebsht\u00eb \u00e7aktivizuar. Sepse, si\u00e7 e tregon p\u00ebrvoja, \u00e7aktivizimi i NUMA p\u00ebr procesin prindor t\u00eb PostgreSQL \u00ebsht\u00eb i mir\u00eb, por nuk \u00ebsht\u00eb domosdoshm\u00ebrisht se do t\u00eb funksionoj\u00eb. Duhet ta kontrolloni dhe shikoni se a \u00ebsht\u00eb \u00e7aktivizuar me t\u00eb v\u00ebrtet\u00eb. <\/p>\n<p><\/p>\n<p>Ka nj\u00eb post t\u00eb mir\u00eb nga Robert Haas. Ai \u00ebsht\u00eb nj\u00eb nga kontribuesit e PostgreSQL. Nj\u00eb nga zhvilluesit kryesor\u00eb t\u00eb t\u00eb gjitha derivateve t\u00eb ul\u00ebta. Dhe n\u00ebse ndiheni p\u00ebrmes lidhjeve nga ky post, atje p\u00ebrshkruhen disa histori interesante p\u00ebr m\u00ebnyr\u00ebn si NUMA ka komplikuar jet\u00ebn e njer\u00ebzve. Shikoni, studioni check-list-in p\u00ebr administratorin e sistemeve, \u00e7far\u00eb duhet t\u00eb mund\u00ebsohet n\u00eb server p\u00ebr q\u00eb baza e t\u00eb dh\u00ebnave t\u00eb funksionoj\u00eb mir\u00eb. K\u00ebto konfigurime duhet t\u00eb shkruhen dhe kontrollohen, sepse ndryshe nuk do t\u00eb jet\u00eb shum\u00eb mir\u00eb. <\/p>\n<p><\/p>\n<p>V\u00ebrej se kjo p\u00ebrfshin t\u00eb gjitha konfigurimet p\u00ebr t\u00eb cilat do t\u00eb flas. Por zakonisht bazat e t\u00eb dh\u00ebnave mblidhen n\u00eb modin master-slave p\u00ebr q\u00ebndrueshm\u00ebri. Mos haroni t\u00eb b\u00ebni k\u00ebto konfigurime n\u00eb slave, sepse nj\u00eb dit\u00eb do t'ju ndodh\u00eb nj\u00eb katastrof\u00eb dhe do t\u00eb kaloni n\u00eb slave, dhe ai do t\u00eb b\u00ebhet master. <\/p>\n<p><\/p>\n<p>N\u00eb nj\u00eb situat\u00eb katastrofike, kur gjith\u00e7ka \u00ebsht\u00eb shum\u00eb e keqe, telefoni juaj do t\u00eb th\u00ebrras\u00eb vazhdimisht dhe shefi do t\u00eb vij\u00eb me nj\u00eb shkop t\u00eb madh, nuk do t\u00eb keni koh\u00eb t\u00eb mendoni p\u00ebr t\u00eb kontrolluar. Dhe rezultatet mund t\u00eb jen\u00eb mjaft tragjike.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/d2fdda7ad4570554b0e134758295f83e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Moment tjet\u00ebr \u2013 jan\u00eb huge pages. Huge pages jan\u00eb t\u00eb v\u00ebshtira p\u00ebr t'u testuar ve\u00e7mas, dhe nuk ka kuptim p\u00ebr k\u00ebt\u00eb, megjith\u00ebse ka benchmarke q\u00eb din\u00eb ta b\u00ebjn\u00eb. Ato jan\u00eb t\u00eb lehta p\u00ebr t'u gjetur n\u00eb internet. <\/p>\n<p><\/p>\n<p>\u00c7far\u00eb ka kuptim? Keni nj\u00eb server jo shum\u00eb t\u00eb shtrenjt\u00eb, n\u00eb t\u00eb cilin ka shum\u00eb memorje operative, p\u00ebr shembull, m\u00eb shum\u00eb se 30 GB. Nuk jeni duke p\u00ebrdorur huge pages. Kjo do t\u00eb thot\u00eb q\u00eb patjet\u00ebr ka overhead nga p\u00ebrdorimi i memorjes. Dhe ky overhead nuk \u00ebsht\u00eb aspak i k\u00ebndsh\u00ebm. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/28c3c94390a6afef815f712ac9189c2d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pse k\u00ebshtu? \u00c7far\u00eb ndodh? Sistemi operativ e ndan memorjen n\u00eb cop\u00ebza t\u00eb vogla. Aq e p\u00ebrshtatshme, aq historikisht \u00ebsht\u00eb vendosur. Dhe n\u00ebse shtojm\u00eb holl\u00ebsira, OS duhet t\u00eb translate adresat virtuale n\u00eb ato fizike. Dhe ky proces nuk \u00ebsht\u00eb m\u00eb i lehti, prandaj OS e ruan rezultatin e k\u00ebsaj operacioneje n\u00eb Translation Lookaside Buffer (TLB).<\/p>\n<p><\/p>\n<p>Dhe p\u00ebr sa koh\u00eb TLB \u2013 \u00ebsht\u00eb nj\u00eb cache, n\u00eb k\u00ebt\u00eb situat\u00eb ndodhin t\u00eb gjitha problemet e njohura t\u00eb cache-it. S\u00eb pari, n\u00ebse keni shum\u00eb memorje operative dhe e gjith\u00eb ajo \u00ebsht\u00eb e ndar\u00eb n\u00eb cop\u00ebza t\u00eb vogla, at\u00ebher\u00eb ky buffer b\u00ebhet shum\u00eb i madh. Dhe n\u00ebse cache-i \u00ebsht\u00eb i madh, k\u00ebrkimi n\u00eb t\u00eb b\u00ebhet m\u00eb i ngadalsh\u00ebm. Overhead-i \u00ebsht\u00eb i sh\u00ebndosh\u00eb dhe ai vet\u00eb konsumon vend, dmth. memorja operative konsumon di\u00e7ka t\u00eb pap\u00ebrshtatshme. Kjo \u00ebsht\u00eb nj\u00ebra nga arsyet. <\/p>\n<p><\/p>\n<p>Dy \u2013 sa m\u00eb shum\u00eb q\u00eb rritet cache n\u00eb nj\u00eb situat\u00eb t\u00eb till\u00eb, aq m\u00eb shum\u00eb rritet mund\u00ebsia q\u00eb t\u00eb keni cache misses. Efikasiteti i k\u00ebtij cache bie shum\u00eb shpejt me rritjen e madh\u00ebsis\u00eb s\u00eb tij. Prandaj, n\u00eb sistemet operative \u00ebsht\u00eb ideuar nj\u00eb qasje e thjesht\u00eb. N\u00eb Linux, kjo \u00ebsht\u00eb e njohur prej koh\u00ebsh. N\u00eb FreeBSD, kjo u shfaq jo shum\u00eb koh\u00eb m\u00eb par\u00eb. Por ne po flasim p\u00ebr Linux. K\u00ebto jan\u00eb huge pages.<\/p>\n<p><\/p>\n<p>Dhe k\u00ebtu duhet t\u00eb theksohet se huge pages, si ide, fillimisht u promovua nga komunitetet q\u00eb p\u00ebrfshinin Oracle dhe IBM, dmth. prodhuesit e bazave t\u00eb t\u00eb dh\u00ebnave mendojn\u00eb se kjo do t\u00eb jet\u00eb e dobishme, p\u00ebrfshir\u00eb p\u00ebr bazat e t\u00eb dh\u00ebnave. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/39a24536929fbcf551d8ba1c8e7faf32.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe si ta lidhim k\u00ebt\u00eb me PostgreSQL? S\u00eb pari, n\u00eb b\u00ebrtham\u00ebn e Linux-it duhet t\u00eb aktivizohen huge pages.<\/p>\n<p><\/p>\n<p>S\u00eb dyti, ato duhet t\u00eb p\u00ebrcaktohen qart\u00eb me parametrin sysctl - sa prej tyre do t\u00eb ket\u00eb. Numrat k\u00ebtu jan\u00eb nga ndonj\u00eb server i vjet\u00ebr. Mund t\u00eb llogaritni se sa af\u00ebrsisht keni shared buffers, n\u00eb m\u00ebnyr\u00eb q\u00eb huge pages t\u00eb p\u00ebrshtaten atje. <\/p>\n<p><\/p>\n<p>Dhe n\u00ebse e gjith\u00eb serveri \u00ebsht\u00eb dedikuar p\u00ebr PostgreSQL, nj\u00eb pik\u00eb e mir\u00eb fillestare \u00ebsht\u00eb t\u00eb ndajm\u00eb ose 25% t\u00eb memorie RAM p\u00ebr shared buffers, ose 75%, n\u00ebse jeni t\u00eb sigurt se n\u00eb k\u00ebt\u00eb 75% baza juaj e t\u00eb dh\u00ebnave do t\u00eb p\u00ebrshtatet me siguri. Nj\u00eb pik\u00eb fillestare e par\u00eb. Dhe llogaritni, n\u00ebse keni 256 GB memorie RAM, at\u00ebher\u00eb, p\u00ebrkat\u00ebsisht, do t\u00eb keni 64 GB t\u00eb shared buffers. Llogaritni pak me ndonj\u00eb rezerv\u00eb \u2013 se \u00e7far\u00eb duhet t\u00eb jet\u00eb ky num\u00ebr.<\/p>\n<p><\/p>\n<p>Derisa t\u00eb arrij\u00eb versionin 9.2 (nese nuk gaboj, q\u00eb nga versioni 8.2) mund t\u00eb lidhni PostgreSQL me huge pages p\u00ebrmes nj\u00eb biblioteke t\u00eb jashtme. Dhe kjo gjithmon\u00eb duhet b\u00ebr\u00eb. S\u00eb pari, ju duhet q\u00eb b\u00ebrthama t\u00eb dij\u00eb si t\u00eb alokoj\u00eb sakt\u00ebsisht huge pages. Dhe, s\u00eb dyti, aplikacioni q\u00eb punon me to duhet t\u00eb jet\u00eb n\u00eb gjendje t'i p\u00ebrdor\u00eb ato. Ajo nuk do t'i p\u00ebrdor\u00eb thjesht p\u00ebr asgj\u00eb. Duke qen\u00eb se PostgreSQL alokonte memorie n\u00eb stilin e sistemit 5, kjo mund t\u00eb b\u00ebhej p\u00ebrmes libhugetlbfs - ky \u00ebsht\u00eb emri i plot\u00eb i bibliotek\u00ebs.<\/p>\n<p><\/p>\n<p>N\u00eb versionin 9.3, u p\u00ebrmir\u00ebsua performanca e PostgreSQL-it n\u00eb pun\u00ebn me memorien dhe u hoq metoda e alokimit t\u00eb memories s\u00eb sistemit 5. T\u00eb gjith\u00eb u g\u00ebzuan shum\u00eb, sepse ndryshe, kur p\u00ebrpiqesh t\u00eb nis\u00ebsh dy instanca PostgreSQL n\u00eb nj\u00eb makin\u00eb, ai thot\u00eb se nuk kam mjaftuesh\u00ebm memorje t\u00eb ndar\u00eb. Dhe thot\u00eb se duhet t\u00eb rregullohet sysctl. Dhe aty \u00ebsht\u00eb nj\u00eb sysctl t\u00eb till\u00eb, q\u00eb duhet t\u00eb rivendosesh dhe k\u00ebshtu me radh\u00eb. P\u00ebrmbledhtazi, t\u00eb gjith\u00eb u g\u00ebzuan. Por alokimi i memories mmap prishi p\u00ebrdorimin e huge pages. Shumica e klient\u00ebve tan\u00eb p\u00ebrdorin buffers t\u00eb m\u00ebdha t\u00eb ndara. Dhe ne e rekomanduam me k\u00ebmb\u00ebngulje q\u00eb t\u00eb mos kalojn\u00eb n\u00eb 9.3, sepse aty overhead-i fillonte t\u00eb ishte n\u00eb p\u00ebrqindje t\u00eb mira.<\/p>\n<p><\/p>\n<p>Por, komuniteti i vuri re k\u00ebt\u00eb problem dhe n\u00eb versionin 9.4 e p\u00ebrmir\u00ebsuan shum\u00eb k\u00ebt\u00eb proces. Dhe n\u00eb 9.4 u shfaq nj\u00eb parameter n\u00eb postgresql.conf, ku mund t\u00eb aktivizoni try, on ose off.<\/p>\n<p><\/p>\n<p>Try \u2013 \u00ebsht\u00eb parametri m\u00eb i sigurt. Kur PostgreSQL fillon, kur alokon memorjen e ndar\u00eb, ai p\u00ebrpiqet t\u00eb marr\u00eb k\u00ebt\u00eb memorje nga huge pages. Dhe n\u00ebse nuk arrin, at\u00ebher\u00eb rikthehet n\u00eb alokim t\u00eb zakonsh\u00ebm. Dhe n\u00ebse keni FreeBSD ose Solaris, at\u00ebher\u00eb mund ta vendosni try, kjo \u00ebsht\u00eb gjithmon\u00eb e sigurt. <\/p>\n<p><\/p>\n<p>N\u00ebse \u00ebsht\u00eb on, at\u00ebher\u00eb ai thjesht nuk nis n\u00ebse nuk ka arritur t\u00eb alokoj\u00eb nga huge pages. K\u00ebtu tashm\u00eb \u2013 kush e preferon \u00e7far\u00eb m\u00eb shum\u00eb. Por n\u00ebse keni vendosur try, at\u00ebher\u00eb kontrolloni q\u00eb v\u00ebrtet t\u00eb keni marr\u00eb at\u00eb q\u00eb duhet alokuar, sepse ka shum\u00eb hap\u00ebsir\u00eb p\u00ebr gabime. Tani ky funksionalitet punon vet\u00ebm n\u00eb Linux.<\/p>\n<p><\/p>\n<p>Nj\u00eb v\u00ebrejtje e vog\u00ebl, para se t\u00eb vazhdojm\u00eb m\u00eb tej. Transparent huge pages - nuk ka t\u00eb b\u00ebj\u00eb me PostgreSQL derim\u00eb. Ai nuk mund ta p\u00ebrdor\u00eb normalisht. Dhe me Transparent huge pages, p\u00ebr nj\u00eb ngarkes\u00eb t\u00eb till\u00eb pune, kur nevojitet nj\u00eb cop\u00eb e madhe e memorjes t\u00eb ndar\u00eb, p\u00ebrfitimet ndodhin vet\u00ebm n\u00ebse volumet jan\u00eb shum\u00eb t\u00eb m\u00ebdha. N\u00ebse keni terabajt t\u00eb memories, at\u00ebher\u00eb kjo mund t\u00eb ket\u00eb r\u00ebnd\u00ebsi. N\u00ebse flasim p\u00ebr aplikacione m\u00eb t\u00eb zakonshme, kur keni 32, 64, 128, 256 GB memorie n\u00eb makin\u00eb, at\u00ebher\u00eb huge pages e zakonshme \u00ebsht\u00eb e mir\u00eb, dhe Transparent thjesht e ndalojm\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/18cf3ace8876e55b42e66f617a24f1bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe gj\u00ebja e fundit n\u00eb lidhje me memorien, q\u00eb nuk \u00ebsht\u00eb drejtp\u00ebrdrejt e lidhur me throughput, mund t\u00eb prish\u00eb shum\u00eb jet\u00ebn tuaj. E gjith\u00eb kapaciteti i kalimit do t\u00eb vuaj\u00eb p\u00ebr shkak se serveri vazhdimisht swap-on. <\/p>\n<p><\/p>\n<p>Dhe kjo do t\u00eb jet\u00eb shum\u00eb e pak\u00ebndshme n\u00eb disa momente. Dhe e keqja kryesore \u00ebsht\u00eb se n\u00eb b\u00ebrthamat moderne, sjellja pak a shum\u00eb ndryshon nga b\u00ebrthamat m\u00eb t\u00eb vjetra t\u00eb Linux-it. Dhe kjo \u00ebsht\u00eb nj\u00eb gj\u00eb, mbi t\u00eb cil\u00ebn \u00ebsht\u00eb mjaft e pak\u00ebndshme t\u00eb q\u00ebndrosh, sepse, kur flasim p\u00ebr ndonj\u00eb pun\u00eb me swap-in, p\u00ebrfundon me nj\u00eb ardhje t\u00eb pap\u00ebrshtatshme t\u00eb OOM-killer. Dhe OOM-killer, i cili nuk arriti n\u00eb koh\u00eb dhe ndaloi PostgreSQL-in, \u00ebsht\u00eb e pak\u00ebndshme. K\u00ebt\u00eb do ta din\u00eb t\u00eb gjith\u00eb, dmth. deri te p\u00ebrdoruesi i fundit. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/c7c46ff0f4cd8cfcfb21978dd1da4c08.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb ndodh? Ju keni nj\u00eb sasi t\u00eb madhe t\u00eb memorjes RAM, gjith\u00e7ka funksionon mir\u00eb. Por p\u00ebr nj\u00eb arsye, serveri ngec n\u00eb swap dhe ngadal\u00ebson p\u00ebr k\u00ebt\u00eb shkak. Duket se ka shum\u00eb memorie, por ndodhi k\u00ebshtu. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/24d19929f1506cd9768a836095a24dfb.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>M\u00eb par\u00eb ne rekomandonim t\u00eb vendosnim vm.swappiness n\u00eb zero, dometh\u00ebn\u00eb, t\u00eb \u00e7aktivizonim swap-in. Ishte dukur se 32 GB memorie RAM dhe buffer\u00ebt e ndar\u00eb t\u00eb ngjash\u00ebm ishin nj\u00eb sasi e madhe. Q\u00ebllimi kryesor i swap-it \u00ebsht\u00eb t\u00eb ket\u00eb nj\u00eb vend p\u00ebr t\u00eb hedhur nj\u00eb proces, n\u00ebse ne d\u00ebshtojm\u00eb. Dhe ndodhte q\u00eb ky funksion nuk po realizohej shum\u00eb. Por \u00e7far\u00eb do t\u00eb b\u00ebsh me at\u00eb proces m\u00eb pas? Ky \u00ebsht\u00eb nj\u00eb problem ku nuk \u00ebsht\u00eb shum\u00eb e qart\u00eb pse ne kemi nevoj\u00eb p\u00ebr swap, sidomos nj\u00eb t\u00eb till\u00eb n\u00eb k\u00ebt\u00eb madh\u00ebsi. <\/p>\n<p><\/p>\n<p>Por n\u00eb versionet m\u00eb moderne, dometh\u00ebn\u00eb, n\u00eb versionet e treta t\u00eb b\u00ebrtham\u00ebs, sjellja ka ndryshuar. Dhe n\u00ebse vendosni swap-in n\u00eb zero, dometh\u00ebn\u00eb, ta \u00e7aktivizoni, p\u00ebr shum\u00eb shpejt, edhe kur keni akoma nj\u00eb sasi t\u00eb caktuar memorie operativ, do t\u00eb vij\u00eb OOM-killer-i p\u00ebr t\u00eb vrar\u00eb konsumator\u00ebt m\u00eb intensiv\u00eb. Sepse ai do t\u00eb mendoj\u00eb se me k\u00ebt\u00eb ngarkes\u00eb na ka mbetur pak dhe do t\u00eb dalim, dmth t\u00eb mos vrasim procesin sistemor, por t\u00eb ulim di\u00e7ka m\u00eb pak t\u00eb r\u00ebnd\u00ebsishme. Kjo gj\u00eb m\u00eb pak e r\u00ebnd\u00ebsishme do t\u00eb jet\u00eb konsumatori intensiv i memories s\u00eb ndar\u00eb, konkretisht postmaster. Pas k\u00ebsaj, do t\u00eb jet\u00eb mir\u00eb n\u00ebse nuk do t\u00eb duhet t\u00eb rikuperojm\u00eb baz\u00ebn. <\/p>\n<p><\/p>\n<p>Prandaj tani defolt, sa mbaj mend, shumica e distribucioneve jan\u00eb diku 6, dometh\u00ebn\u00eb, n\u00eb \u00e7far\u00eb momenti t\u00eb fillojm\u00eb t\u00eb p\u00ebrdorim swap-in n\u00eb var\u00ebsi t\u00eb asaj q\u00eb ka mbetur nga memoria. <strong>Tani ne rekomandojm\u00eb t\u00eb vendosim vm.swappiness = 1, sepse kjo n\u00eb praktik\u00eb e \u00e7aktivizon at\u00eb, por nuk shkakton efekte t\u00eb tilla si me OOM-killer-in q\u00eb vjen papritur dhe gjith\u00eb kjo e vret.<\/strong> <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/20f01dca0aff819abcbb687cea69ac74.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb ndodh m\u00eb pas? Kur flasim p\u00ebr performanc\u00ebn e bazave t\u00eb t\u00eb dh\u00ebnave dhe gradualisht arrijm\u00eb te disqet, t\u00eb gjith\u00eb fillojn\u00eb t\u00eb shqet\u00ebsohen. Sepse e v\u00ebrteta se disku \u00ebsht\u00eb i ngadalsh\u00ebm dhe memoria \u00ebsht\u00eb e shpejt\u00eb \u00ebsht\u00eb e njohur p\u00ebr t\u00eb gjith\u00eb nga f\u00ebmij\u00ebria. \u00c7do kush e di se do t\u00eb ket\u00eb probleme me performanc\u00ebn e diskut n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave.<\/p>\n<p><\/p>\n<p>Problemi kryesor me performanc\u00ebn e PostgreSQL-it, i lidhur me rritjet n\u00eb checkpoints, nuk ndodh p\u00ebr shkak se disku \u00ebsht\u00eb i ngadalsh\u00ebm. Kjo \u00ebsht\u00eb m\u00eb shum\u00eb p\u00ebr shkak se kapaciteti i memories dhe disqet nuk jan\u00eb t\u00eb balancuar. P\u00ebr m\u00eb tep\u00ebr, ato mund t\u00eb mos jen\u00eb t\u00eb balancuara n\u00eb vende t\u00eb ndryshme. PostgreSQL nuk \u00ebsht\u00eb i konfiguruesh\u00ebm, OS nuk \u00ebsht\u00eb konfiguruesh\u00ebm, hardueri nuk \u00ebsht\u00eb i konfiguruesh\u00ebm dhe hardueri \u00ebsht\u00eb i gabuar. Dhe ky problem nuk ndodh vet\u00ebm n\u00ebse gjith\u00e7ka po shkon si\u00e7 duhet, dmth ose nuk ka ngarkesa, ose konfigurimet dhe hardueri jan\u00eb t\u00eb p\u00ebrshtatura mir\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/c4d841f9ed48bb5bb1b29bd9f189753f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb \u00ebsht\u00eb kjo dhe si duket? Zakonisht njer\u00ebzit q\u00eb punojn\u00eb me PostgreSQL kan\u00eb kaluar shpesh n\u00eb k\u00ebt\u00eb situat\u00eb. Ta sqaroj. Si\u00e7 e thash\u00eb, PostgreSQL her\u00eb pas here b\u00ebn checkpoints, p\u00ebr t\u00eb hedhur faqet e ndotura n\u00eb memorie n\u00eb disk. N\u00ebse kemi nj\u00eb sasi t\u00eb madhe t\u00eb memories s\u00eb ndar\u00eb, at\u00ebher\u00eb checkpoint fillon t\u00eb ndikoj\u00eb fuqish\u00ebm n\u00eb disk, sepse transferon k\u00ebto faqe me fsync. Ai arrin n\u00eb buffer-in e kernel-it dhe shkruhet n\u00eb disqe me an\u00eb t\u00eb fsync. Dhe n\u00ebse sasia e k\u00ebtij procesi \u00ebsht\u00eb e madhe, ne mund t\u00eb shohim nj\u00eb efekt t\u00eb pak\u00ebndsh\u00ebm, dmth nj\u00eb shfryt\u00ebzim shum\u00eb t\u00eb madh t\u00eb disqeve.<\/p>\n<p><\/p>\n<p>K\u00ebtu kam dy figura. Do t'i shpjegoj se \u00e7far\u00eb jan\u00eb. K\u00ebto jan\u00eb dy grafika t\u00eb korrelacionuara n\u00eb koh\u00eb. Grafiku i par\u00eb \u00ebsht\u00eb shfryt\u00ebzimi i diskut. Aty rritet pothuajse deri n\u00eb 90% n\u00eb at\u00eb moment. N\u00ebse keni nj\u00eb baz\u00eb t\u00eb dh\u00ebnash me disqe fizike, me nj\u00eb kontrollues RAID dhe shfryt\u00ebzimi \u00ebsht\u00eb deri n\u00eb 90%, at\u00ebher\u00eb kjo \u00ebsht\u00eb lajm i keq. Kjo do t\u00eb thot\u00eb se pak m\u00eb von\u00eb do t\u00eb arrij\u00eb 100 dhe hyrja-dalja do t\u00eb ndaloj\u00eb. <\/p>\n<p><\/p>\n<p>N\u00ebse keni nj\u00eb \u00e7ik t\u00eb disqeve, at\u00ebher\u00eb aty \u00ebsht\u00eb nj\u00eb histori pak m\u00eb ndryshe. Ajo varet nga m\u00ebnyra si \u00ebsht\u00eb ndar\u00eb, \u00e7far\u00eb lloj disku \u00ebsht\u00eb, etj. <\/p>\n<p><\/p>\n<p>Dhe paralelisht k\u00ebtu \u00ebsht\u00eb konfigurimi i grafikut nga nj\u00eb pamje e brendshme e PostgreSQL-it, e cila tregon se si ndodh checkpoint-i. Dhe me ngjyr\u00eb t\u00eb gjelb\u00ebr k\u00ebtu \u00ebsht\u00eb sh\u00ebnuar sasia e bufferave, k\u00ebto faqe t\u00eb ndotura q\u00eb arrit\u00ebn n\u00eb k\u00ebt\u00eb checkpoint p\u00ebr sinkronizim. Dhe kjo \u00ebsht\u00eb kryesorja q\u00eb duhet t\u00eb dini k\u00ebtu. Ne shohim se shum\u00eb faqe jan\u00eb arritur dhe n\u00eb nj\u00eb moment jemi p\u00ebrballur me nj\u00eb penges\u00eb, dometh\u00ebn\u00eb kemi shkruar-shkruar, k\u00ebtu \u00ebsht\u00eb e qart\u00eb se sistemi i disqeve \u00ebsht\u00eb shum\u00eb i angazhuar. Dhe checkpoint-i ka ndikim t\u00eb madh n\u00eb disk. N\u00eb m\u00ebnyr\u00eb ideale, situata duhet t\u00eb duket m\u00eb shum\u00eb k\u00ebshtu, dometh\u00ebn\u00eb k\u00ebtu kemi pasur m\u00eb pak shkrime. Dhe ne mund ta rregullojm\u00eb k\u00ebt\u00eb me konfigurime, p\u00ebr ta mbajtur m\u00eb k\u00ebshtu. Dometh\u00ebn\u00eb, shfryt\u00ebzimi \u00ebsht\u00eb i vog\u00ebl, por ndonj\u00ebher\u00eb ne shkruajm\u00eb di\u00e7ka. <\/p>\n<p><\/p>\n<p>\u00c7far\u00eb duhet t\u00eb b\u00ebni p\u00ebr ta zgjidhur k\u00ebt\u00eb problem? N\u00ebse ju ka ndaluar IO n\u00ebn baz\u00ebn e t\u00eb dh\u00ebnave, at\u00ebher\u00eb kjo do t\u00eb thot\u00eb se t\u00eb gjith\u00eb p\u00ebrdoruesit q\u00eb erdh\u00ebn p\u00ebr t\u00eb ekzekutuar k\u00ebrkesat e tyre do t\u00eb presin. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/3efac5fe79443c32f56ec8da2f418116.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00ebse e shikoni nga k\u00ebndv\u00ebshtrimi i Linux-it, n\u00ebse keni marr\u00eb nj\u00eb harduer t\u00eb mir\u00eb, e keni konfiguruar si\u00e7 duhet, e keni konfigurur PostgreSQL-in q\u00eb t\u00eb b\u00ebj\u00eb k\u00ebto checkpoints m\u00eb rrall\u00eb, p\u00ebr t'i shp\u00ebrndar\u00eb ato nd\u00ebrmjet nj\u00ebri-tjetrit, at\u00ebher\u00eb ju jeni t\u00eb futur n\u00eb parametrat defolt t\u00eb Debian-it. P\u00ebr shumic\u00ebn e distribucioneve Linux, kjo \u00ebsht\u00eb pamja: vm.dirty_ratio=20, vm.dirty_background_ratio=10.<\/p>\n<p><\/p>\n<p>\u00c7far\u00eb do t\u00eb thot\u00eb kjo? Me kernelin 2.6, \u00ebsht\u00eb shfaqur nj\u00eb demon flushing. Pdglush, n\u00eb var\u00ebsi t\u00eb asaj q\u00eb p\u00ebrdorim, merret me pastrimin e faqeve t\u00eb papastra nga buffer-i i kernel-it dhe i hedh ato kur \u00ebsht\u00eb e nevojshme, duke hedhur faqe t\u00eb papastra kur pastrimi n\u00eb sfond nuk ndihmon m\u00eb. <\/p>\n<p><\/p>\n<p>Kur fillon pastrimi n\u00eb sfond? Kur 10% e gjith\u00eb memorie s\u00eb aksesor\u00ebve n\u00eb server \u00ebsht\u00eb e mbushur me faqe t\u00eb papastra n\u00eb bufferin e kernel-it, aktivizohet nj\u00eb funksion special p\u00ebr pastrim n\u00eb sfond. Pse quhet pastrim n\u00eb sfond? Sepse merr si paramet\u00ebr numrin e faqeve q\u00eb t\u00eb heq\u00eb. Dhe, p\u00ebr shembull, heq N faqe. Dhe p\u00ebr nj\u00eb koh\u00eb t\u00eb caktuar kjo gj\u00eb b\u00ebn pushim. Pastaj kthehet dhe heq nj\u00eb sasi m\u00eb t\u00eb madhe faqeve. <\/p>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb nj\u00eb histori shum\u00eb e thjesht\u00eb. K\u00ebtu ndodhemi si me nj\u00eb pishin\u00eb, ku n\u00eb nj\u00eb tub derdhet, n\u00eb tjetrin derdhet. Na ka ardhur nj\u00eb checkpoint dhe, n\u00ebse ka d\u00ebrguar pak faqe t\u00eb papastra p\u00ebr pastrim, at\u00ebher\u00eb gradualisht nga buffer-i i kernel-it pgflush do ta heq\u00eb k\u00ebt\u00eb ndihm\u00ebn e kujdesshme. <\/p>\n<p><\/p>\n<p>N\u00ebse vazhdojn\u00eb t\u00eb grumbullohen k\u00ebto faqe t\u00eb papastra, ato grumbullohen deri n\u00eb 20%, pas s\u00eb cil\u00ebs prioritare p\u00ebr sistemin operativ \u00ebsht\u00eb q\u00eb ta heq\u00eb k\u00ebt\u00eb n\u00eb disk, sepse n\u00ebse ndalon energjia, do t\u00eb kemi probleme. Ne do t\u00eb humbasim k\u00ebto t\u00eb dh\u00ebna, p\u00ebr shembull. <\/p>\n<p><\/p>\n<p>Cila \u00ebsht\u00eb strategjia? <strong>Strategjia \u00ebsht\u00eb se k\u00ebto parametra n\u00eb bot\u00ebn moderne, 20% dhe 10% nga e gjith\u00eb memoria q\u00eb ka makina, jan\u00eb t\u00eb tmerrshme n\u00eb aspektin e kapacitetit t\u00eb \u00e7do sistemi disk q\u00eb keni.<\/strong> <\/p>\n<p><\/p>\n<p>Imagjinoni se keni 128 GB RAM. 12,8 GB arrijn\u00eb n\u00eb sistemin tuaj t\u00eb diskut. Dhe \u00e7far\u00ebdo q\u00eb keni si cache, \u00e7far\u00ebdo array, ato nuk do ta mbajn\u00eb k\u00ebt\u00eb sasi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/1e4bab2fad7d3a05dc76cdd9d153f46c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><strong>Prandaj ne rekomandojm\u00eb q\u00eb k\u00ebto numra t\u00eb konfigurohen menj\u00ebher\u00eb sipas mund\u00ebsive t\u00eb kontrollorit tuaj RAID.<\/strong> K\u00ebtu \u00ebsht\u00eb dh\u00ebn\u00eb nj\u00eb rekomandim p\u00ebr kontrollorin q\u00eb ka 512 MB cache. <\/p>\n<p><\/p>\n<p>T\u00eb gjith\u00eb e llogarisin shum\u00eb thjesht\u00eb. Mund ta vendosni vm.dirty_background n\u00eb byte. Dhe k\u00ebto konfigurime anullojn\u00eb dy t\u00eb parat. Ose ratio sipas parazgjedhjes, ose jan\u00eb aktivizuar ato q\u00eb jan\u00eb n\u00eb byte, at\u00ebher\u00eb do t\u00eb funksionojn\u00eb ato q\u00eb jan\u00eb n\u00eb byte. Por, sepse jam nj\u00eb konsulent DBA dhe punoj me klient\u00eb t\u00eb ndrysh\u00ebm, p\u00ebrpiqem t\u00eb mbaj gj\u00ebrat t\u00eb sigurta, prandaj, n\u00ebse \u00ebsht\u00eb n\u00eb byte, at\u00ebher\u00eb n\u00eb byte. Askush nuk dha asnj\u00eb garanci se nj\u00eb administrator i mir\u00eb nuk do t\u00eb shtoj\u00eb memorie n\u00eb server dhe nuk do ta rindez\u00eb at\u00eb, nd\u00ebrsa numri do t\u00eb mbetet i nj\u00ebjt\u00eb. Thjesht llogaritni k\u00ebta numra q\u00eb t\u00eb siguroheni se gjith\u00e7ka do t\u00eb hyj\u00eb atje. <\/p>\n<p><\/p>\n<p>\u00c7far\u00eb do t\u00eb ndodh\u00eb n\u00ebse nuk do t\u00eb hyj\u00eb? Kam shkruar se \u00e7do flushing efektivisht ndalohet, por n\u00eb t\u00eb v\u00ebrtet\u00eb kjo \u00ebsht\u00eb nj\u00eb figur\u00eb e fjal\u00ebs. Sistemi operativ ka nj\u00eb problem t\u00eb madh \u2013 ka shum\u00eb faqe t\u00eb papastra, prandaj ndalohet efektivisht IO-t\u00eb q\u00eb krijojn\u00eb klient\u00ebt tuaj, dmth. aplikacioni q\u00eb ka d\u00ebrguar nj\u00eb k\u00ebrkes\u00eb SQL n\u00eb baz\u00eb, po pret. \u00c7do hyrje \u2013 dalje n\u00eb t\u00eb \u00ebsht\u00eb n\u00eb prioritetin m\u00eb t\u00eb ul\u00ebt, sepse baza \u00ebsht\u00eb e z\u00ebn\u00eb me checkpoint. Dhe kur do t\u00eb p\u00ebrfundoj\u00eb, nuk dihet. Dhe kur keni arritur deri n\u00eb flushing t\u00eb zakonsh\u00ebm, kjo do t\u00eb thot\u00eb se t\u00eb gjitha IO-t\u00eb jan\u00eb t\u00eb z\u00ebna me t\u00eb. Dhe derisa t\u00eb p\u00ebrfundoj\u00eb, nuk do t\u00eb b\u00ebni asgj\u00eb. <\/p>\n<p><\/p>\n<p>K\u00ebtu jan\u00eb edhe dy pika t\u00eb r\u00ebnd\u00ebsishme q\u00eb dalin jasht\u00eb k\u00ebtij raporti. K\u00ebto konfigurime duhet t\u00eb p\u00ebrputhen me konfigurimet n\u00eb postgresql.conf, dmth. konfigurimet e checkpoints. Dhe sistemi juaj i disqeve duhet t\u00eb jet\u00eb i konfiguruar n\u00eb m\u00ebnyr\u00eb adekuate. <strong>N\u00ebse keni cache n\u00eb RAID, at\u00ebher\u00eb duhet t\u00eb ket\u00eb nj\u00eb bateri.<\/strong> Njer\u00ebzit blejn\u00eb RAID me cache t\u00eb mir\u00eb pa bateri. <strong>N\u00ebse keni SSD n\u00eb RAID, ato duhet t\u00eb jen\u00eb t\u00eb destinuara p\u00ebr server\u00eb dhe duhet t\u00eb ken\u00eb kondensator\u00eb.<\/strong> K\u00ebtu \u00ebsht\u00eb nj\u00eb list\u00eb e detajuar. N\u00eb k\u00ebt\u00eb link ndodhet raporti im n\u00eb lidhje me konfigurimin e performanc\u00ebs s\u00eb disqeve n\u00eb PostgreSQL. Atje jan\u00eb t\u00eb gjitha k\u00ebto lista kontrolle. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/0ca13d550cb9eec4163f886467b2b3ea.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb tjet\u00ebr mund ta nd\u00ebrlikoj\u00eb shum\u00eb jet\u00eb? K\u00ebta jan\u00eb dy parametra. Ata jan\u00eb relativisht t\u00eb rinj. Mund t\u00eb jen\u00eb t\u00eb aktivizuar si parazgjedhje n\u00eb aplikacione t\u00eb ndryshme. Dhe ata mund t\u00eb nd\u00ebrlikojn\u00eb jet\u00ebn n\u00eb t\u00eb nj\u00ebjt\u00ebn mas\u00eb, n\u00ebse aktivizohen gabim. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/35aa98d67ff1f089a751a5fd808bd1b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ka dy gj\u00ebra relativisht t\u00eb reja. T\u00eb dy u shfaq\u00ebn n\u00eb b\u00ebrtham\u00ebn e tret\u00eb. Ky \u00ebsht\u00eb sched_migration_cost n\u00eb nanosekonda dhe sched_autogroup_enabled, i cili \u00ebsht\u00eb nj\u00eb n\u00eb parazgjedhje. <\/p>\n<p><\/p>\n<p>Dhe si i prishin jet\u00ebn? \u00c7far\u00eb \u00ebsht\u00eb sched_migration_cost? Me planifikuesin Linux, nj\u00eb proces mund t\u00eb migrohet nga nj\u00eb CPU n\u00eb tjetrin. Dhe p\u00ebr PostgreSQL, q\u00eb ekzekuton k\u00ebrkesa, migrimi n\u00eb nj\u00eb CPU tjet\u00ebr \u00ebsht\u00eb komplet i paqart\u00eb. Nga k\u00ebndv\u00ebshtrimi i sistemit operativ, kur nd\u00ebrmerrni dritaret midis openoffice dhe terminalit, ndoshta \u00ebsht\u00eb e mir\u00eb, por <strong>p\u00ebr baz\u00ebn e t\u00eb dh\u00ebnave \u00ebsht\u00eb shum\u00eb e keqe.<\/strong> <strong>Prandaj, politika e arsyeshme \u00ebsht\u00eb t\u00eb vendosni migration_cost n\u00eb nj\u00eb vler\u00eb t\u00eb madhe, t\u00eb pakt\u00ebn disa mij\u00ebra nanosekonda.<\/strong> <\/p>\n<p><\/p>\n<p>\u00c7far\u00eb do t\u00eb thot\u00eb kjo p\u00ebr scheduler? Do t\u00eb mendoj\u00eb se gjat\u00eb k\u00ebtij koh\u00eb ky proces \u00ebsht\u00eb ende aktiv. Pra, n\u00ebse keni ndonj\u00eb transaksion t\u00eb gjat\u00eb q\u00eb merret me di\u00e7ka p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb, scheduler do ta kuptoj\u00eb k\u00ebt\u00eb. Ai do t\u00eb mendoj\u00eb se derisa t\u00eb kaloj\u00eb kjo koh\u00eb skadimi, nuk ka nevoj\u00eb t\u00eb migroj\u00eb k\u00ebt\u00eb proces askund. N\u00ebse procesi po b\u00ebn di\u00e7ka, at\u00ebher\u00eb ai nuk do t\u00eb migrohet askund, ai do t\u00eb p\u00ebrfundoj\u00eb pa shqet\u00ebsim n\u00eb CPU-n\u00eb q\u00eb i \u00ebsht\u00eb alokuar. Dhe rezultati \u00ebsht\u00eb p\u00ebr ta \u00e7muar. <\/p>\n<p><\/p>\n<p>Pika tjet\u00ebr \u00ebsht\u00eb autogroup. Ka nj\u00eb ide t\u00eb mir\u00eb p\u00ebr ngarkesa specifike q\u00eb nuk kan\u00eb lidhje me bazat e t\u00eb dh\u00ebnave moderne \u2013 grupimi i proceseve sipas terminalit virtual, nga i cili jan\u00eb nisur. Kjo \u00ebsht\u00eb e dobishme p\u00ebr disa detyra. <strong>N\u00eb praktik\u00eb, PostgreSQL \u00ebsht\u00eb nj\u00eb sistem me shum\u00eb procese me prefork, i cili niset nga nj\u00eb terminal. Ju keni lock writer, checkpoint dhe t\u00eb gjitha k\u00ebrkesat tuaja nga klient\u00ebt do t\u00eb grupohen n\u00eb nj\u00eb scheduler, n\u00eb nj\u00eb CPU. Aty do t\u00eb presin s\u00eb bashku, kur ai t\u00eb lirohet, q\u00eb t\u00eb mos e pengojn\u00eb nj\u00ebri-tjetrin dhe t\u00eb q\u00ebndrojn\u00eb atje sa m\u00eb gjat\u00eb. Kjo histori nuk \u00ebsht\u00eb aspak e nevojshme n\u00eb rast t\u00eb till\u00eb ngarkese dhe prandaj duhet t\u00eb \u00e7aktivizohet.<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/55e829d1c1b69b7f6eaf5fc89dad30d3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kolegji im Aleksej Lesovski ka b\u00ebr\u00eb teste me pgbench t\u00eb thjesht\u00eb, ku rriti ndjesh\u00ebm migration_cost dhe \u00e7aktivizoi autogroup. <strong>Ndryshimi n\u00eb nj\u00eb harduer t\u00eb dob\u00ebt doli gati 10%.<\/strong>. Ka nj\u00eb diskutim n\u00eb list\u00ebn e postimeve t\u00eb postgres, ku njer\u00ebzit tregojn\u00eb rezultate se si k\u00ebto ndryshime kan\u00eb ndikuar n\u00eb shpejt\u00ebsin\u00eb e k\u00ebrkeseve. <strong>kan\u00eb ndikuar deri n\u00eb 50%.<\/strong>. Ka shum\u00eb histori t\u00eb tilla.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/b3d1983ec2a37f8b85129c93f2373644.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe p\u00ebrfundimisht lidhur me politik\u00ebn e kursimit t\u00eb energjis\u00eb. Mir\u00eb \u00ebsht\u00eb q\u00eb tani Linux mund t\u00eb p\u00ebrdoret n\u00eb laptop. Dhe ai do t\u00eb konsumonte n\u00eb dukje mir\u00eb baterin\u00eb. Por papritur del se kjo mund t\u00eb ndodhi edhe n\u00eb server. <\/p>\n<p><\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, n\u00ebse merrni server\u00eb me qira nga ndonj\u00eb host, at\u00ebher\u00eb 't\u00eb mir\u00ebt' <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/\"   title=\"hostuese\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1200\">hostuese<\/a> nuk e kujdesen q\u00eb ju t\u00eb keni performanc\u00eb m\u00eb t\u00eb mir\u00eb. Detyra e tyre \u00ebsht\u00eb t\u00eb sigurojn\u00eb q\u00eb hardueri t\u00eb p\u00ebrdoret maksimumi n\u00eb m\u00ebnyr\u00eb efikase. Prandaj ata mund t\u00eb aktivizojn\u00eb si parazgjedhje modalitetin e kursimit t\u00eb energjis\u00eb t\u00eb laptopit n\u00eb sistemin operativ.<\/p>\n<p><\/p>\n<p><strong>N\u00ebse p\u00ebrdorni n\u00eb nj\u00eb server me baz\u00ebn e t\u00eb dh\u00ebnave n\u00ebn ngarkes\u00eb intensive k\u00ebt\u00eb mund, at\u00ebher\u00eb zgjedhja juaj \u00ebsht\u00eb acpi_cpufreq + performance. Edhe me ondemand do t\u00eb keni probleme.<\/strong> <\/p>\n<p><\/p>\n<p>Intel_pstate \u00ebsht\u00eb nj\u00eb drejtues pak m\u00eb ndryshe. Dhe tani preferohet ky, si nj\u00eb m\u00eb i vonsh\u00ebm dhe m\u00eb mir\u00eb funksionues.<\/p>\n<p><\/p>\n<p>Dhe, p\u00ebrkat\u00ebsisht, guvernatori vet\u00ebm performance. Ondemand, powersave dhe t\u00eb tjera \u2013 nuk jan\u00eb p\u00ebr ju. <\/p>\n<p><\/p>\n<p>Rezultatet nga explain analyze PostgreSQL mund t\u00eb ndryshojn\u00eb me disa rend mjeshtrive, n\u00ebse aktivizoni powersave, sepse praktikisht CPU-t\u00eb do t\u00eb programohen n\u00eb nj\u00eb m\u00ebnyr\u00eb krejt t\u00eb paparashikueshme.<\/p>\n<p><\/p>\n<p>K\u00ebto gj\u00ebra mund t\u00eb jen\u00eb t\u00eb aktivizuara si parazgjedhje. Shikoni me kujdes \u2013 a jan\u00eb aktivizuar automatikisht. Kjo mund t\u00eb jet\u00eb nj\u00eb problem i v\u00ebrtet\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Rregullimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL. Ilya Kosmodemyansky\" src=\"\/wp-content\/uploads\/2020\/06\/ef32dafd9c8ea3403dc31c34ee2b5da8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe n\u00eb fund doja t\u00eb falenderoja djemt\u00eb nga ekipi yn\u00eb DBA i PosgreSQL-Consulting, ve\u00e7an\u00ebrisht Maksim Boguk dhe Aleksej Lesovski, t\u00eb cil\u00ebt \u00e7do dit\u00eb d\u00ebshmojn\u00eb k\u00ebt\u00eb \u00e7\u00ebshtje. Dhe p\u00ebr klient\u00ebt tan\u00eb p\u00ebrpiqemi t\u00eb b\u00ebjm\u00eb sa m\u00eb mir\u00eb q\u00eb ata t\u00eb funksionojn\u00eb. Kjo \u00ebsht\u00eb si me udh\u00ebzimet p\u00ebr sigurin\u00eb n\u00eb aviacion. K\u00ebtu gjith\u00e7ka \u00ebsht\u00eb shkruar me gjak. \u00c7do kap\u00ebse e k\u00ebtyre \u00ebsht\u00eb zbuluar n\u00eb procesin e ndonj\u00eb problemi. Un\u00eb me k\u00ebnaq\u00ebsi ndaja ato me ju.<\/p>\n<p><\/p>\n<p>Pyetje:<\/p>\n<p><\/p>\n<p><em>Faleminderit! N\u00ebse, p\u00ebr shembull, nj\u00eb kompani d\u00ebshiron t\u00eb kursej\u00eb dhe t\u00eb vendos\u00eb baz\u00ebn e t\u00eb dh\u00ebnave dhe logjik\u00ebn e aplikacionit n\u00eb nj\u00eb server t\u00eb vet\u00ebm, ose n\u00ebse kompania ndjek tendenc\u00ebn bashk\u00ebkohore t\u00eb arkitekturave me mikrosh\u00ebrbime, ku PostgreSQL ekzekutohet n\u00eb nj\u00eb kontejner. \u00c7far\u00eb \u00ebsht\u00eb k\u00ebtu? Sysctl-ka globalisht ndikon n\u00eb t\u00eb gjith\u00eb b\u00ebrtham\u00ebn. Nuk kam d\u00ebgjuar q\u00eb sysctl jan\u00eb virtualizuar ndonj\u00ebher\u00eb, q\u00eb ata t\u00eb funksiononin ve\u00e7mas n\u00eb kontejner. Ka vet\u00ebm cgroup dhe aty ka vet\u00ebm nj\u00eb pjes\u00eb t\u00eb kontrollit. Si mund t\u00eb jetoni me k\u00ebt\u00eb? Ose n\u00ebse d\u00ebshironi performanc\u00eb, at\u00ebher\u00eb ekzekutoni PostgreSQL n\u00eb nj\u00eb server t\u00eb dedikuar dhe b\u00ebjeni at\u00eb t\u00eb optimizuar?<\/em><\/p>\n<p><\/p>\n<p>Ne i kemi p\u00ebrgjigjur pyetjes tuaj n\u00eb m\u00ebnyr\u00eb t\u00eb p\u00ebraf\u00ebrt n\u00eb tre m\u00ebnyra. N\u00ebse nuk b\u00ebhet fjal\u00eb p\u00ebr nj\u00eb server t\u00eb dedikuar, q\u00eb mund t\u00eb optimizohet etj., at\u00ebher\u00eb relaksohuni, gjith\u00e7ka do t\u00eb funksionoj\u00eb mir\u00eb pa k\u00ebto caktime. N\u00ebse keni nj\u00eb ngarkes\u00eb t\u00eb till\u00eb q\u00eb duhet t\u00eb b\u00ebni k\u00ebto caktime, at\u00ebher\u00eb ju do t\u00eb kaloni m\u00eb par\u00eb te serveri i dedikuar sesa te ato caktime.<\/p>\n<p><\/p>\n<p>Cila \u00ebsht\u00eb problemi? N\u00ebse kjo \u00ebsht\u00eb nj\u00eb virtualk\u00eb, at\u00ebher\u00eb, p\u00ebr shum\u00eb mund\u00ebsi, do t\u00eb keni shum\u00eb probleme, p\u00ebr shembull, me at\u00eb q\u00eb n\u00eb shumic\u00ebn e virtualkave ka nj\u00eb latency mjaft t\u00eb pamjaftueshme t\u00eb diskut. Edhe n\u00ebse kapaciteti i disqeve \u00ebsht\u00eb i mir\u00eb, nj\u00eb transaksion me probleme operacioni I\/O, i cili nuk ndikon shum\u00eb n\u00eb kapacitetin mesatar, ndodhi n\u00eb momentin e checkpoint-it ose n\u00eb momentin e shkruar n\u00eb WAL, at\u00ebher\u00eb baza do t\u00eb vuaje shum\u00eb nga kjo. Dhe ju do ta v\u00ebreni k\u00ebt\u00eb m\u00eb par\u00eb se do t\u00eb ashp\u00ebrsoheni n\u00eb k\u00ebto probleme. <\/p>\n<p><\/p>\n<p>N\u00ebse keni NGINX n\u00eb t\u00eb nj\u00ebjtin server, do t\u00eb keni t\u00eb nj\u00ebjtin problem. Ai do t\u00eb luftoj\u00eb p\u00ebr memorien e p\u00ebrbashk\u00ebt. Dhe nuk do t\u00eb arrini n\u00eb problemet q\u00eb p\u00ebrshkruhen k\u00ebtu.<\/p>\n<p><\/p>\n<p>Por nga ana tjet\u00ebr, disa nga k\u00ebta parametra megjithat\u00eb do t\u00eb jen\u00eb t\u00eb r\u00ebnd\u00ebsish\u00ebm p\u00ebr ju. P\u00ebr shembull, vendosni dirty_ratio me sysctl, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mos jet\u00eb kaq ekstrem \u2013 n\u00eb \u00e7do rast do t\u00eb ndihmoj\u00eb. Pavar\u00ebsisht, do t\u00eb keni nd\u00ebrveprim me diskun. Dhe do t\u00eb ndodh\u00eb me nj\u00eb skem\u00eb t\u00eb gabuar. K\u00ebto jan\u00eb cil\u00ebsimet standarde q\u00eb tregova. Dhe n\u00eb \u00e7do rast \u00ebsht\u00eb m\u00eb mir\u00eb t'i modificoni. <\/p>\n<p><\/p>\n<p>Me NUMA mund t\u00eb ket\u00eb probleme. VmWare, p\u00ebr shembull, funksionon mir\u00eb me NUMA me cil\u00ebsimet e kund\u00ebrta. Dhe k\u00ebtu duhet t\u00eb zgjidhni \u2013 server t\u00eb \u00e7elikt\u00eb ose jo. <\/p>\n<p><\/p>\n<p><em>Kam nj\u00eb pyetje lidhur me Amazon AWS. Ata kan\u00eb imazhe t\u00eb parakonfiguruara. Nj\u00eb prej tyre quhet Amazon RDS. A ka ndonj\u00eb cil\u00ebsim t\u00eb personalizuar p\u00ebr sistemin e tyre operativ?<\/em><\/p>\n<p><\/p>\n<p>Aty ka cil\u00ebsime, por \u00ebsht\u00eb nj\u00eb set tjet\u00ebr cil\u00ebsimesh. K\u00ebtu ne konfigurojm\u00eb sistemin operativ nga pik\u00ebpamja se si do ta p\u00ebrdor\u00eb databaza. Dmth, ne kemi nevoj\u00eb p\u00ebr kaq shum\u00eb resurse, dhe tani do t'i konsumojm\u00eb ato. Pas k\u00ebsaj, Amazon RDS u merr k\u00ebto resurse, dhe atje performanca bie. Ka histori t\u00eb ve\u00e7anta se si njer\u00ebzit fillojn\u00eb t\u00eb manipulojn\u00eb me k\u00ebt\u00eb. Disa her\u00eb mjaft me sukses. Por kjo nuk ka lidhje me cil\u00ebsimet e OS. Kjo \u00ebsht\u00eb n\u00eb nj\u00ebfar\u00eb m\u00ebnyre hacking i cloud-it. Kjo \u00ebsht\u00eb nj\u00eb histori tjet\u00ebr.<\/p>\n<p><\/p>\n<p><em>Pse Transparent huge pages nuk japin efektin e krahasuar me Huge TLB?<\/em><\/p>\n<p><\/p>\n<p>Nuk japin. Kjo mund t\u00eb shpjegohet n\u00eb shum\u00eb m\u00ebnyra. Por n\u00eb fakt, ata thjesht nuk e ofrojn\u00eb. Cila \u00ebsht\u00eb historia me PostgreSQL? Ai rezervon nj\u00eb pjes\u00eb t\u00eb madhe t\u00eb memories s\u00eb p\u00ebrbashk\u00ebt n\u00eb nisje. Transparent apo jo Transparent \u2013 nuk ka r\u00ebnd\u00ebsi fare. Fakti se ata rezervohen n\u00eb nisje shpjegon gjith\u00e7ka. Dhe n\u00ebse ka shum\u00eb memorie dhe \u00ebsht\u00eb e nevojshme t\u00eb ri-strukturohet segmenti i shared_memory, at\u00ebher\u00eb Transparent huge pages do t\u00eb ishin t\u00eb r\u00ebnd\u00ebsishme. Tek PostgreSQL, ai \u00ebsht\u00eb rezervuar thjesht si nj\u00eb cop\u00eb e madhe n\u00eb fillim dhe asgj\u00eb e ve\u00e7ant\u00eb nuk ndodh m\u00eb tej. Sigurisht, mund t\u00eb p\u00ebrdoret, por ka mund\u00ebsin\u00eb e marrjes s\u00eb korrupsionit t\u00eb shared_memory, kur ai do t\u00eb ri-rezervohet di\u00e7ka. PostgreSQL nuk e di k\u00ebt\u00eb.<\/p>\n<p>Burimi: <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.0.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\/sq\/blog\/administrirovanie\/linux-tuning-to-improve-postgresql-performance-ilya-kosmodemyanskij\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\/sq\/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\udd47Linux tuning to improve PostgreSQL performance. Ilya Kosmodemyansky | ProHoster","description":"Shkurtimi i raportit t\u00eb vitit 2015 nga Ilya Kosmodemyansky \"Optimizimi i Linux p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar performanc\u00ebn e PostgreSQL\" Sh\u00ebnim: Dua t\u00eb theksoj se ky raport \u00ebsht\u00eb datuar n\u00eb n\u00ebntor 2015 - ka kaluar m\u00eb shum\u00eb se 4 vjet dhe \u00ebsht\u00eb realizuar shum\u00eb.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/linux-tuning-to-improve-postgresql-performance-ilya-kosmodemyanskij","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/84082","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=84082"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/84082\/revisions"}],"predecessor-version":[{"id":159869,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/84082\/revisions\/159869"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/84083"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=84082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=84082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=84082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}