Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

Tuhinga o te purongo 2015 na Ilya Kosmodemyansky "Linux tuning to improve PostgreSQL performance"

Whakakahoretanga: Ka kite ahau i tuhia tenei ripoata i te marama o Whiringa-a-rangi 2015 - neke atu i te 4 tau kua pahemo, kua roa te wa. Ko te putanga 9.4 i korerohia i roto i te ripoata kua kore e tautokohia. I roto i nga tau 4 kua pahure ake nei, e 5 nga putanga hou o PostgreSQL kua tukuna, a 15 nga putanga o te kernel Linux kua tukuna. Mena ka tuhia ano e koe enei waahanga, ka puta he purongo rereke. Engari i konei ka whakaarohia e maatau te whakatikatika Linux mo te PostgreSQL, e whai kiko tonu ana i enei ra.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky


Ko Ilya Kosmodemyansky toku ingoa. Kei te mahi ahau i te PostgreSQL-Consulting. Na inaianei ka korero ahau mo nga mahi me Linux e pa ana ki nga papaa raraunga i te nuinga me te PostgreSQL, na te mea he rite tonu nga kaupapa.

He aha ta tatou e korero ai? Mena ka korero koe ki a PostgreSQL, me noho koe hei kaiwhakahaere UNIX. He aha te tikanga? Mena ka whakatauritehia e matou a Oracle me PostgreSQL, na i Oracle me noho koe ki te 80% DBA kaiwhakahaere raraunga me te 20% Linux kaiwhakahaere.

Ma te PostgreSQL he uaua ake. Ma te PostgreSQL me tino mohio koe ki te mahi a Linux. A i te wa ano, rere iti i muri i te locomotive, no te mea kua tata nei kua whakahoutia nga mea katoa. Na ka tukuna nga kakano hou, ka puta nga mahi hou, ka pai ake te mahi, aha atu.

He aha tatou e korero ai mo Linux? Ehara i te mea na te mea kei te huihuinga Linux matou a Pita, engari na te mea i roto i nga ahuatanga hou ko tetahi o nga punaha whakahaere tino tika mo te whakamahi i nga papaaarangi whanui me te PostgreSQL otira ko Linux. Na te mea ko FreeBSD, engari, kei te whanake haere i etahi huarahi rerekee. A ka puta he raruraru mo te mahi me etahi atu mea maha. Ko te mahinga o PostgreSQL i runga i te Matapihi he take nui motuhake, i runga i te mea kaore he rite o te maharatanga tiritahi a Windows ki a UNIX, ko PostgreSQL e herea katoa ana ki tenei, na te mea he punaha mahi-maha.

A, ki taku whakaaro he iti ake te aro o te katoa ki nga taonga o waho pera i a Solaris, no reira me haere.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

Ko te tohatoha Linux hou kua neke atu i te 1 nga whiringa syctl, i runga i te ahua o to hanga i te pata. I te wa ano, ki te titiro tatou ki nga nati rereke, ka taea e tatou te whakatika i tetahi mea i roto i nga huarahi maha. He tawhā punaha konae me pehea te whakairi i a raatau. Mena kei a koe nga patai mo te tiimata: he aha te whakauru ki te BIOS, me pehea te whirihora i te taputapu, aha atu.

He pukapuka tino nui tenei ka taea te korero i roto i nga ra maha, kaore i roto i te purongo poto, engari inaianei ka aro ahau ki nga mea nui, me pehea te karo i nga rake e kiia ana ka aukati i a koe ki te whakamahi pai i to putunga korero i runga i te Linux mena ka kaua e whakatikaia. A i te wa ano, he mea nui ko te maha o nga tawhā taunoa kaore i whakauruhia ki roto i nga tautuhinga e tika ana mo te papaarangi. Arā, ma te taunoa ka mahi kino, kaore ranei.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

He aha nga whaainga o mua i roto i te Linux? Ki taku whakaaro na te mea kei te whakahaere katoa koe mo te whakahaere Linux, kaore he take ki te whakamarama he aha nga whaainga.

Ka taea e koe te whakatangi:

  • PTM.
  • Pūmahara.
  • Te rokiroki.
  • Ētahi atu. Ka korero tatou mo tenei i te mutunga mo te paramanawa. Ahakoa, hei tauira, ko nga tawhā penei i te kaupapa here whakaora hiko ka pa ki nga mahi i runga i te tino ohorere, ehara i te huarahi tino pai.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

He aha nga mea motuhake o PostgreSQL me te papaaarangi whanui? Ko te raru ko te kore e taea e koe te tarai i tetahi nati takitahi ka kite kua tino pai ake a maatau mahi.

Ae, tera ano nga taputapu, engari he mea uaua te putunga raraunga. Ka mahi tahi me nga rauemi katoa kei te tūmau me te pai ki te taunekeneke ki te katoa. Mena ka titiro koe ki nga tohutohu a Oracle o naianei mo te whakamahi i te OS kaihautu, ka rite ki te katakata mo taua cosmonaut Mongolian - whangaia te kuri kaua e pa ki tetahi mea. Me hoatu e tatou ki te putunga nga rauemi katoa, ma te paataka raraunga ano e whakariterite nga mea katoa.

Ko te tikanga, he rite tonu te ahuatanga ki te PostgreSQL. Ko te rereketanga ko te mea kaore ano kia taea e te papaaarangi te tango i nga rauemi katoa mo ia ano, ara i tetahi waahi i te taumata Linux me whakariterite e koe nga mea katoa.

Ko te whakaaro nui ko te kore e kowhiri i tetahi whaainga ka tiimata ki te whakatika, hei tauira, te mahara, te PTM me tetahi mea penei, engari ki te tātari i te taumahatanga mahi me te ngana ki te whakapai ake i te whakaputanga kia taea ai te utaina i hangaia e nga kaiwhakaputa pai. mo tatou, tae atu ki o tatou kaiwhakamahi.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

Anei he pikitia hei whakamarama he aha tena. He putunga Linux OS kei reira he mahara tiritiri, kei reira ano hoki nga putunga tiritahi PostgreSQL. Ko te PostgreSQL, kaore i rite ki a Oracle, ka mahi tika na roto i te kaara kakano, ara, kia uru mai tetahi wharangi mai i te kōpae ki roto i tana maharatanga tiritahi, me haere ma roto i te kaawana kernel me te hoki, he rite tonu te ahuatanga.

Kei te noho nga kopae i raro i tenei punaha. Naku tenei i tuhi hei kopae. Inaa, tera pea he kaiwhakahaere RAID, aha atu.

A ko tenei whakauru-puta i tetahi ara, i tetahi atu ranei ka puta mai i tenei take.

Ko te PostgreSQL he papaa raraunga matarohia. He wharangi kei roto. Na ka puta nga whakauru me nga putanga katoa ma te whakamahi i nga wharangi. Kei te whakanui matou i nga poraka ki te mahara ki nga wharangi. A, ki te kore he mea i tupu, ka panuihia e matou, katahi ka ngaro haere mai i tenei keteroki, mai i nga parepare tiritahi ka mutu ki runga i te kōpae.

Mena ka whakakapihia e tatou tetahi mea ki tetahi waahi, ka tohua te wharangi katoa he paru. I tohu ahau i konei i te puru. A ko te tikanga me tukutahi tenei wharangi ki te rokiroki poraka. Arā, i te wā i paru mātou, ka uru mātou ki te WAL. A i etahi wa whakamiharo ka tae mai tetahi ahuatanga e kiia nei ko te waahi tirotiro. A, i tuhia nga korero ki roto i tenei pukapuka kua tae mai ia. A ko te tikanga ko nga wharangi paru katoa i konei i tera wa i roto i enei putunga tiritiri i tukutahia me te kopae rokiroki ma te whakamahi i te fsync na roto i te parapara kernel.

He aha i mahia ai tenei? Ki te ngaro tatou ngaohiko, ka kore matou i whiwhi i te āhuatanga i ngaro nga raraunga katoa. Ko te mahara mau tonu, i korerohia e te katoa, kei roto i te ariā putunga raraunga - he marama kei te heke mai, e kaha ana matou, e pai ana ki a matou, engari inaianei kei te noho ratou i roto i te 20 tau. A, ko te tikanga, me aro turuki enei mea katoa.

A ko te mahi ki te whakanui i te whakaputanga ko te whakatikatika i enei wahanga katoa kia tere te hoki whakamuri. Ko te mahara tiritahi he keteroki wharangi. I roto i te PostgreSQL i tukuna e matou he patai whiriwhiri, he aha ranei, i tikina mai enei raraunga mai i te kōpae. Ka mutu i roto i nga parepare tiritahi. Na reira, kia pai ake te mahi, me nui te mahara.

Kia pai ai te tere me te tere o enei mea katoa, me tika te whirihora i te punaha whakahaere i nga waahanga katoa. A kowhiria nga taputapu taurite, na te mea he koretake koe i etahi waahi, katahi ka nui te mahara, engari karekau e tukuna i te tere tere.

A kia haere tatou ma ia o enei waahanga.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

Kia tere ake ai te haere whakamua me te hoki whakamuri o enei wharangi, me tutuki nga mea e whai ake nei:

  • Tuatahi, me kaha ake te mahi me te mahara.
  • Tuarua, ko tenei whakawhitinga ina haere nga wharangi mai i te mahara ki te kopae kia pai ake.
  • Tuatoru, me whai kopae pai.

Mena kei a koe te 512 GB o te RAM i roto i te tūmau ka mutu katoa ki runga i te puku SATA me te kore he keteroki, ka huri te tūmau pātengi raraunga katoa ehara i te paukena anake, engari he paukena me te atanga SATA. Ka rere tika koe ki roto. A kahore he mea hei whakaora ia koe.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

Mo te waahi tuatahi me te mahara, e toru nga mea ka tino uaua te ora.

Ko te tuatahi ko NUMA. He mea hanga te NUMA hei whakapai ake i nga mahi. I runga i te taumaha o te mahi, ka taea te whakatika i nga mea rereke. A, i roto i tana ahua hou o naianei, ehara i te mea tino pai mo nga tono penei i nga papaunga raraunga e kaha whakamahi ana i nga wharangi keteroki tiritahi.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

I roto i te poto. Me pehea e mohio ai mena kei te he tetahi mea ki a NUMA? Kei a koe etahi momo patototanga kino, ohorere kua taumaha etahi PTM. I te wa ano, ka tirotirohia e koe nga patai i roto i te PostgreSQL ka kite kaore he mea rite ki reira. Ko enei patai kia kaua e tino kaha te PTM. Ka taea e koe te hopu i tenei mo te wa roa. He maamaa ake te whakamahi i te taunakitanga tika mai i te timatanga me pehea te whirihora i te NUMA mo PostgreSQL.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

He aha te tino mahi? Ko te NUMA e tu ana mo te Whakauru Mahara-kore. He aha te take? He PTM koe, kei te taha o tera ko tona maharatanga rohe. A ka taea e tenei hononga mahara te tango i te mahara mai i etahi atu PTM.

Mena ka oma koe numactl --hardware, ka whiwhi koe i tetahi pepa nui. I roto i etahi atu mea, ka waiho he mara tawhiti. Ka whai tau - 10-20, he penei. Ko enei tau he mea ke atu i te maha o nga hops hei tiki i tenei mahara mamao me te whakamahi i te rohe. Ko te tikanga, he whakaaro pai. He pai te tere o te mahi i raro i te whānuitanga o nga taumahatanga mahi.

Inaianei me whakaaro koe kei a koe tetahi PTM i te tuatahi ka ngana ki te whakamahi i tana maharatanga rohe, katahi ka ngana ki te tohi ake i tetahi atu mahara ma te honohono mo tetahi mea. Na tenei PTM ka whiwhi i to keteroki wharangi PostgreSQL katoa - koinei, etahi kikipaita. I nga wa katoa ka whiwhi koe i te keehi kino rawa atu, na te mea kei runga i te PTM he iti noa te mahara i roto i taua waahanga. A ko nga mahara katoa e tukuna ana ka haere ma enei hononga. Ka puta te puhoi me te pouri. A ko to kaitukatuka e mahi ana i tenei node ka taumaha tonu. A ko te wa uru o tenei mahara he kino, he puhoi. Koinei te ahuatanga kaore koe e pirangi mena kei te whakamahi koe i tenei mo te papaunga raraunga.

No reira, ko te kowhiringa tika mo te putunga korero mo te punaha whakahaere Linux kia kore e mohio he aha nga mea kei reira. Kia uru atu ai ki te mahara pera ano.

He aha tera? Ko te ahua nei he rereke ke atu. Ka tupu tenei mo tetahi take ngawari: me nui te mahara mo te keteroki wharangi - tekau, rau gigabytes.

A, ki te tohatohahia e matou enei mea katoa ka keteroki o taatau raraunga ki reira, ka nui ake te painga mai i te whakamahi i te keteroki i te painga mai i te urunga uaua ki te mahara. Na ka tino whai hua tatou ki te mea ka uru atu tatou ki te mahara ma te whakamahi i te NUMA.

No reira, e rua nga huarahi i konei i tenei wa, kia tae mai ra ano te marama o te heke mai, a, kaore e taea e te papaunga raraunga ake te mohio ko wai nga PTM e rere ana me te wahi e tika ana kia toia mai tetahi mea.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

No reira, ko te huarahi tika ko te whakakore i te NUMA katoa, hei tauira, ka whakaara ano. I roto i te nuinga o nga wa, ko te nui o nga toa ka kore e puta ake te patai ko tehea te mea pai ake.

He kōwhiringa anō. He maha ake nga wa ka whakamahia e matou i te tuatahi, na te mea ka tae mai tetahi kaihoko ki a matou mo te tautoko, ko te whakaara ano i te tūmau he mea nui ki a ia. He pakihi tana i reira. A ka raru ratou na te NUMA. Na reira, ka ngana matou ki te whakakore i nga huarahi iti ake i te whakaara ano, engari kia tupato ki te tirotiro kua monokia. Na te mea, e ai ki nga wheako, he pai ki te whakakore i te NUMA i runga i te tukanga matua PostgreSQL, engari kaore rawa e tika kia mahi. Me titiro tatou ka kite kua tino whakaweto ia.

He panui pai na Robert Haas. Koinei tetahi o nga kaitaunaki PostgreSQL. Ko tetahi o nga kaiwhakawhanake matua o nga kowhatu taumata-iti katoa. A, ki te whai koe i nga hononga mai i tenei panui, he maha nga korero karakara e whakaatu ana i te uauatanga o te ao mo te tangata. Titiro, akohia te rarangi arowhai a te kaiwhakahaere punaha mo nga mea hei whirihora i runga i te tūmau kia pai ai te mahi a to tatou papaunga raraunga. Ko enei tautuhinga me tuhi me te tirotiro, na te mea kaore e tino pai.

Kia mahara ka pa tenei ki nga tautuhinga katoa ka korerohia e au. Engari ko te nuinga o nga wa ka kohia nga papaunga raraunga i roto i te aratau rangatira-pononga mo te he. Kaua e wareware ki te hanga i enei tautuhinga ki runga i te taurekareka na te mea he ra ka tupono koe ka huri koe ki te taurekareka ka noho hei rangatira.

I roto i nga ahuatanga ohorere, ka tino kino nga mea katoa, kei te tangi tonu to waea ka haere mai to rangatira me te rakau nui, kaore koe e whai wa ki te whakaaro mo te tirotiro. A he tino kino nga hua.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

Ko te waahi e whai ake nei ko nga wharangi nui. He uaua nga wharangi nui ki te whakamatautau wehe, a kaore he take ki te mahi pera, ahakoa he tohu tohu ka taea tenei. He ngawari ki a Google.

He aha te take? Kei a koe he tūmau kore utu nui me te nui o te RAM, hei tauira, neke atu i te 30 GB. Kaore koe e whakamahi i nga wharangi nui. Ko te tikanga kei a koe te utu mo te whakamahi mahara. A ko tenei o runga he tawhiti atu i nga mea tino pai.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

He aha tera? Na he aha kei te haere? Ko te punaha whakahaere ka tohatoha te mahara ki nga waahanga iti. He tino watea, he penei te ahuatanga o mua. A, ki te haere tatou ki nga korero, me whakamaori e te OS nga wahitau mariko ki nga wahitau tinana. A ko tenei mahi ehara i te mea ngawari, no reira ka huna e te OS te hua o tenei mahi i roto i te Translation Lookaside Buffer (TLB).

Na i te mea he keteroki te TLB, ka ara ake nga raru katoa i roto i te keteroki i tenei ahuatanga. Tuatahi, mena he nui to RAM ka toha katoa ki roto i nga wahanga iti, katahi ka tino nui tenei parepare. A, ki te mea he nui te keteroki, he puhoi te rapu. He pai te hauora o runga ake, ka nui ake te waahi, ara, kei te pau te RAM i tetahi mea he. Tenei wa.

E rua - ka nui ake te tipu o te keteroki i roto i tenei ahuatanga, ka nui ake pea ka ngaro koe i te keteroki. A ka tere haere te kaha o tenei keteroki i te mea ka nui haere tona rahi. Na reira, i puta mai nga punaha whakahaere he huarahi ngawari. Kua whakamahia i roto i te Linux mo te wa roa. I puta mai i FreeBSD kaore i roa i mua. Engari e korero ana matou mo Linux. He wharangi nui enei.

A i konei me tohu ko nga wharangi nui, hei whakaaro, i panaia i te tuatahi e nga hapori e uru ana ki a Oracle me IBM, ara, ka tino whakaaro nga kaihanga putunga korero ka whai hua ano tenei mo nga papaa raraunga.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

A me pehea e taea ai tenei te whakahoahoa ki a PostgreSQL? Tuatahi, me whakahoehia nga wharangi nui ki te pata Linux.

Tuarua, me tino tohu e te tawhā sysctl - e hia. Ko nga nama i konei no etahi tūmau tawhito. Ka taea e koe te tatau e hia nga parepare tiritahi kei a koe kia uru ai nga wharangi nunui ki reira.

A, ki te whakatapua to kaimau katoa ki te PostgreSQL, na, ko te timatanga pai ko te tohatoha i te 25% o te RAM ki nga paanui tiritahi, ki te 75% ranei mena ka tino mohio koe ka uru to putunga raraunga ki tenei 75%. Te timatanga tuatahi. A whakaaro, ki te whai koe i te 256 GB o te RAM, na, na reira, ka whiwhi koe i te 64 GB o nga papaa nui. Tatauhia me etahi tawhē - he aha te ahua o tenei ahua.

I mua i te putanga 9.2 (ki te kore ahau e pohehe, mai i te putanga 8.2), i taea te hono atu a PostgreSQL me nga wharangi nui ma te whakamahi i te whare pukapuka tuatoru. A me mahi tonu tenei. Tuatahi, me hiahia koe ki te kernel kia taea ai e koe te toha tika nga wharangi nui. A, tuarua, kia taea e te tono e mahi tahi ana me ratou te whakamahi. E kore e whakamahia pera noa. I te mea kua tohatohahia e PostgreSQL te mahara ki te ahua o te punaha 5, ka taea tenei ma te whakamahi i te libhugetlbfs - koinei te ingoa katoa o te whare pukapuka.

I roto i te 9.3, i pai ake te mahi a PostgreSQL i te wa e mahi ana me te mahara me te punaha 5 tikanga tohatoha mahara i whakarerea. I tino harikoa nga tangata katoa, na te kore ka ngana koe ki te whakahaere i nga waahanga PostgreSQL e rua i runga i te miihini kotahi, ka kii ia kaore au i te nui o aku mahara. Na ka mea ia me whakatika te sysctl. A he sysctl tera e hiahia ana koe ki te whakaara ano, me etahi atu. I te nuinga o te waa, i koa te katoa. Engari ko te tohatoha mahara mmap i pakaru te whakamahinga o nga wharangi nui. Ko te nuinga o a maatau kaihoko e whakamahi ana i nga papaa tiritiri nui. A ka tino taunaki matou kia kaua e huri ki te 9.3, na te mea i timata te tatau i runga i nga paheketanga pai.

Engari i aro te hapori ki tenei raru, a, i te 9.4 i tino pai te mahi ano i tenei kaupapa. A i roto i te 9.4 ka puta mai he tawhā ki postgresql.conf ka taea e koe te ngana, ki runga, whakaweto ranei.

Ko te ngana te whiringa haumaru. Ka timata te PostgreSQL, ka tohatohahia te mahara tahi, ka ngana ki te hopu i tenei mahara mai i nga wharangi nui. A, ki te kore e mahi, ka hoki ki te kowhiringa noa. Mena kei a koe he FreeBSD, Solaris ranei, katahi ka taea e koe te whakamatau, he haumaru tonu.

Mena kei runga, karekau e tiimata mena kaore e taea te kowhiri mai i nga wharangi nui. Anei kua korero ko wai me te mea pai ake. Engari ki te mea kua whakamatau koe, tirohia kei a koe nga mea e hiahia ana koe ki te tohu, na te mea he nui te waahi mo te he. I tenei wa ka mahi noa tenei mahi i runga i te Linux.

Kotahi ano te tuhipoka iti i mua i te haere whakamua. Ko nga wharangi nui maamaa kaore ano mo PostgreSQL. Kaore e taea e ia te whakamahi noa. Na me nga wharangi nui o Transparent mo taua taumahatanga mahi, ina hiahiatia he waahanga nui o te mahara tahi, ka tae mai nga painga me nga pukapuka tino nui. Mena he terabytes to mahara ka uru mai pea tenei. Mena kei te korero matou mo etahi atu tono mo ia ra, ka 32, 64, 128, 256 GB te mahara kei runga i to miihini, katahi ka pai nga wharangi nui o mua, ka whakakorehia e maatau te Transparent.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

A ko te mea whakamutunga mo te mahara kaore e pa ana ki te fruitut, ka tino kino to oranga. Ko nga waahanga katoa ka tino pa ki te meka kei te huri tonu te tūmau.

A ka tino kino tenei i roto i te maha o nga huarahi. A ko te raru nui he rereke te ahua o nga kakano hou mai i nga kakano Linux tawhito. A ko tenei mea he tino kino ki te takahi, na te mea ka korero tatou mo etahi momo mahi me te swap, ka mutu te taenga mai o te OOM-kaipatu. A ko te OOM-killer, kaore i tae mai i te wa tika ka tukuna te PostgreSQL, he kino. Ka mohio nga tangata katoa mo tenei, ara, tae noa ki te kaiwhakamahi whakamutunga.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

Kei te aha? He nui to RAM kei reira, he pai nga mea katoa. Engari mo etahi take ka iri te tūmau ki te whakawhiti me te puhoi na tenei. Ko te ahua he nui te mahara, engari ka tupu tenei.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

I mua, i tohutohu matou ki te whakatakoto i te vm.swappiness ki te kore, ara te whakakore i te whakawhiti. I mua, te ahua nei he nui te rahi o te 32 GB o te RAM me nga parepare tiritahi. Ko te kaupapa matua o te swap he waahi ki te maka i te kirinuku ina taka tatou. A kaore i tino tutuki. Na ka aha koe ki tenei kirinuku? He mahi tenei kaore i te tino marama he aha te take e hiahiatia ai te whakawhiti, ina koa he penei te rahi.

Engari i roto i nga mea hou ake nei, ara, ko nga putanga tuatoru o te kernel, kua rereke te whanonga. A, ki te whakatauhia e koe te whakawhiti ki te kore, ara, whakawetohia, katahi ka roa ake nei, ahakoa he RAM e toe ana, ka tae mai he kaipatu OOM ki a koe ki te patu i nga kaihoko tino kaha. Na te mea ka whakaarohia e ia na runga i taua taumahatanga mahi he iti tonu te toenga ka peke atu tatou ki waho, ara, kia kaua e whao te mahi o te punaha, engari ki te whao i tetahi mea iti ake. Ko tenei mea iti ake ko te kaihoko kaha o te mahara tahi, ara ko te rangatira poutāpeta. A i muri i tera ka pai ki te kore e whakahokia te turanga.

Na, inaianei ko te taunoa, ki taku mahara, ko te nuinga o nga tohatoha kei te takiwa o te 6, ara, i tehea wa ka timata koe ki te whakamahi i te swap i runga i te nui o te mahara e toe ana. Inaianei ka tūtohu kia tautuhia te vm.swappiness = 1, na te mea ka whakawetohia e tenei, engari kaore e rite nga paanga ki te OOM-kaipatu i tae ohorere mai ka mate katoa.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

He aha to muri mai? Ina korero tatou mo te mahinga o nga papaa raraunga me te neke haere ki nga kopae, ka tiimata te katoa ki te hopu i o raatau mahunga. Na te mea ko te pono he puhoi te kōpae me te tere o te mahara e mohio ana te katoa mai i te tamarikitanga. A e mohio ana te katoa ka raru nga mahi a te putunga raraunga.

Ko te raru nui o te mahi a PostgreSQL e pa ana ki nga tohu tirotiro kaore e puta na te mea he puhoi te kōpae. Ko tenei pea na te mea kaore i te taurite te mahara me te bandwidth kōpae. Heoi, kare pea e taurite ki nga waahi rereke. Kaore i te whirihorahia te PostgreSQL, kaore i te whirihora te OS, kaore i te whirihorahia te taputapu me te hee te taputapu. A kaore tenei raruraru ka puta anake mena ka rite nga mea katoa, ara, kaore he kawenga, ka pai ranei te kowhiringa o nga tautuhinga me nga taputapu.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

He aha te ahua, he aha te ahua? Ko te nuinga o nga tangata e mahi tahi ana me PostgreSQL kua uru atu ki tenei kaupapa neke atu i te kotahi. Maku e whakamarama. Ka rite ki taku korero, ka mahia e PostgreSQL nga waahi tirotiro ki te maka i nga wharangi paru ki roto i te mahara tiritiri ki te kōpae. Mena he nui to tatou maharatanga tiritahi, katahi ka timata te waahi arowhai ki te pa ki te kōpae, na te mea ka makahia enei wharangi me te fsync. Ka tae mai ki roto i te putunga kernel ka tuhia ki nga kōpae ma te whakamahi i te fsync. A, ki te mea he nui te rahi o tenei pakihi, katahi ka kite tatou i tetahi paanga kino, ara he nui rawa te whakamahi o nga kōpae.

Anei e rua aku pikitia. Ka whakamarama au inaianei he aha tena. E rua nga kauwhata e hono ana i te waa. Ko te kauwhata tuatahi ko te whakamahi kōpae. I konei ka tata ki te 90% i tenei wa. Mēnā he rahunga pātengi raraunga koe me ngā kōpae tinana, me te whakamahi pūmana RAID i te 90%, he korero kino tenei. Ko te tikanga he iti ake ka eke ki te 100 ka mutu te I/O.

Mena kei a koe he huinga kopae, he rereke te korero. Ka whakawhirinaki ki te ahua o te whirihora, he aha te momo huinga, aha atu.

A i roto i te whakarara, ka whirihorahia he kauwhata mai i te tirohanga pou-a-roto, e whakaatu ana i te ahuatanga o te waahi tirotiro. A ko te tae kaariki kei konei e whakaatu ana i te maha o nga kaitarai, enei wharangi paru, i taua wa i tae mai ki tenei waahi tirotiro mo te tukutahi. A koinei te mea nui me mohio koe ki konei. Ka kite matou he maha nga wharangi kei konei, a, i etahi wa ka eke matou ki te papa, ara, i tuhi me te tuhi, i konei e tino pukumahi ana te punaha kōpae. A he tino kaha te awe o ta maatau waahi tirotiro ki te kōpae. Ko te tikanga, me penei te ahua o te ahuatanga, ara, he iti ake te rekoata i konei. A ka taea e tatou te whakatika me nga tautuhinga kia penei tonu. Arā, he iti te hangarua, engari kei tetahi waahi kei te tuhi matou i tetahi mea ki konei.

He aha nga mahi hei whakatau i tenei raru? Mena kua whakamutua e koe te IO i raro i te paataka raraunga, ko te tikanga ka tatari nga kaiwhakamahi katoa i tae mai ki te whakatutuki i o raatau tono.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

Mena ka titiro koe mai i te tirohanga o Linux, mena ka mau koe i nga taputapu pai, i whirihora tika, whirihorahia te PostgreSQL i te nuinga o te waa kia iti ake ai enei waahi tirotiro, ka horahia i te waa ki waenga i a raatau, katahi koe ka uru ki nga tawhā Debian taunoa. Mo te nuinga o nga tohatoha Linux, koinei te pikitia: vm.dirty_ratio=20, vm.dirty_background_ratio=10.

He aha te tikanga? I puta mai tetahi rewera pupuhi mai i te kernel 2.6. Pdglush, i runga i te hunga e whakamahi ana, e mahi ana ki te whakakore papamuri i nga wharangi paru mai i te putunga kernel me te whakakore i te wa e tika ana ki te whakakore i nga wharangi paru ahakoa he aha, ka kore e awhina te whakakorenga o muri.

Ka tae mai te papamuri? I te wa e nohoia ana te 10% o te katoa o te RAM e waatea ana i runga i te tūmau e nga wharangi paru kei roto i te kakano buffer, ka karangahia he mahi tuhi-atu i te papamuri. He aha te mea he papamuri? Hei tawhā, ka whai whakaaro ki te maha o nga wharangi hei tuhi. A, me kii, ka tuhia e ia nga wharangi N. A mo tetahi wa ka moe tenei mea. Katahi ka haere mai ano ka kape i etahi atu wharangi.

He korero tino ngawari tenei. Ko te raruraru i konei he rite ki te puna kaukau, ka ringihia ki tetahi paipa, ka rere ki tetahi atu. I tae mai ta maatau waahi tirotiro a mena ka tukuna e ia etahi wharangi paru mo te whakakore, katahi ka ata whakatika nga mea katoa mai i te kernel buffer pgflush.

Mena kei te kohikohi tonu enei wharangi paru, ka kohia ake ki te 20%, muri iho ko te kaupapa matua o te OS ko te tuhi i nga mea katoa ki te kōpae, na te mea ka ngaro te mana, ka kino nga mea katoa mo tatou. Ka ngaro enei raraunga, hei tauira.

He aha te mahi tinihanga? Ko te mahi ko enei tawhā i roto i te ao hou ko te 20 me te 10% o te katoa o te RAM kei runga i te miihini, he tino whakamataku i runga i nga ahuatanga o te whakaputanga o tetahi punaha kōpae kei a koe.

Whakaarohia kei a koe te 128 GB o RAM. 12,8 GB ka tae mai ki to punaha kōpae. A ahakoa he aha te keteroki kei a koe, ahakoa he aha te huinga kei reira koe, e kore e roa.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

No reira, ka tūtohu kia whakatika tonu koe i enei tau i runga i nga kaha o to kaiwhakahaere RAID. I tukuna e ahau he kupu ki konei mo tetahi kaiwhakahaere he 512 MB te keteroki.

Ko nga mea katoa e kiia ana he tino ngawari. Ka taea e koe te whakauru i te vm.dirty_background ki nga paita. Na enei tautuhinga ka whakakore i nga mea e rua o mua. Ko te ōwehenga he taunoa, ko te hunga whai paita ka whakahohehia, katahi ka mahi nga mea whai paita. Engari i te mea he Kaitohutohu DBA ahau me te mahi tahi me nga kaihoko rereke, ka ngana ahau ki te tarai kakau kakau, na reira, mena kei roto i nga paita, kei roto i nga paita. Karekau he tangata i kii kia kore te kaiwhakahaere pai e taapiri atu te mahara ki te tūmau, ka whakaara ano, ka noho tonu te ahua. Me tatau noa enei tau kia uru nga mea katoa ki reira me te taurangi.

Ka aha ki te kore koe e uru ki roto? Kua tuhia e au ka mutu katoa te rere, engari he ahua korero tenei. He raru nui te punaha whakahaere - he maha nga wharangi paru, no reira ka mutu te IO e whakaputahia ana e o kiritaki, ara, kua tae mai te tono ki te tuku patai sql ki te paataka raraunga, kei te tatari. Ko nga whakaurunga/whakaputa ki a ia ko te mea iti rawa te kaupapa matua, na te mea kei te nohoia te patengi raraunga e te waahi tirotiro. A ka mutu tana kare i tino marama. A, ka tutuki i a koe te rewharewha kore-papamuri, ko te tikanga ko to IO katoa e nohoia ana e ia. A tae noa ki te mutunga, kaore koe e mahi.

E rua ano nga mea nui kei konei kei tua atu i te whanuitanga o tenei purongo. Ko enei tautuhinga kia rite ki nga tautuhinga i roto i te postgresql.conf, ara i nga tautuhinga tirotiro. A me tino whirihora to punaha kōpae. Mena kei a koe he keteroki kei runga i te RAID, me whai pākahiko. Ka hokona e nga tangata te RAID me te keteroki pai kaore he pākahiko. Mena kei a koe nga SSD i te RAID, me noho he kaimau, me whai puri ki reira. Anei he rarangi arowhai taipitopito. Kei roto i tenei hononga taku purongo me pehea te whirihora i te kōpae mahi i PostgreSQL. Kei reira katoa enei rarangi arowhai.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

He aha atu te mea ka tino uaua te ora? E rua enei tawhā. He ahua hou ratou. Ma te taunoa, ka taea te whakauru ki roto i nga tono rereke. A ka taea e ratou te whakararu i te ora ki te he te whakakā.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

E rua nga mea ahua hou. Kua puta kee ratou ki te tuatoru o nga uwha. Ko te sched_migration_cost tenei i roto i nga nanohekona me te sched_autogroup_enabled, he mea taunoa.

Na me pehea e pakaru ai to oranga? He aha te sched_migration_cost? I runga i te Linux, ka taea e te kaihōtaka te whakawhiti i tetahi tukanga mai i tetahi PTM ki tetahi atu. Na mo PostgreSQL, e mahi ana i nga patai, ko te heke ki tetahi atu PTM kaore e tino marama. Mai i te tirohanga o te punaha whakahaere, ka huri koe i nga matapihi i waenga i te tari tuwhera me te tauranga, he pai tenei, engari mo te pātengi raraunga he tino kino tenei. No reira, ko te kaupapa here e tika ana ko te whakarite i te migration_cost ki etahi uara nui, neke atu i te maha mano nanohekona.

He aha te tikanga o tenei mo te kaihōtaka? Ka whakaarohia i tenei wa kei te wera tonu te tukanga. Arā, ki te whai koe i tetahi tauwhitinga kua roa e mahi ana i tetahi mea mo te wa roa, ka mohio te kaiwhakariterite ki tenei. Ka whakaaro ia kia pahemo tenei wa, kaore he take ki te heke i tenei mahi ki hea. Mena i te wa ano ka mahi te mahi i tetahi mea, katahi ka kore e nekehia ki hea, ka mahi marie i runga i te PTM kua tohaina ki a ia. A he rawe te hua.

Ko te tohu tuarua ko te roopuaunoa. He pai te whakaaro mo nga uta mahi motuhake kaore e pa ana ki nga papaunga raraunga hou - ko te whakarōpū i nga tukanga ma te tauranga mariko i whakarewahia ai. He watea tenei mo etahi mahi. I roto i te mahi, PostgreSQL he punaha-tukatuka maha me te prefork ka rere mai i te tauranga kotahi. He kaituhi raka koe, he waahi tirotiro, a ka whakarōpūhia nga tono katoa a to kiritaki ki roto i te raarangi kotahi, mo ia PTM. A ka tatari tahi ratou i reira kia watea ai ia, kia pokanoa tetahi ki tetahi, kia roa ake ai te noho a ia. He korero tenei kaore e tika ana mo te taumahatanga penei, na reira me whakaweto.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

Ko taku hoa mahi a Alexey Lesovsky i whakamatau me te pgbench ngawari, i whakanuia e ia te migration_cost i runga i te ota rahi me te whakaweto i te roopu auto. Ko te rereketanga o nga taputapu kino he tata ki te 10%. He matapaki mo te rarangi mēra postgres ka tukuna e nga tangata nga hua o nga huringa rite ki te tere uiui awe 50%. He maha nga korero penei.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

Ka mutu, mo te kaupapa here whakaora hiko. Ko te mea pai ko te Linux ka taea te whakamahi i runga i te pona. A ko te whakapae ka pau pai te pākahiko. Engari ohorere ka puta ka puta ano tenei i runga i te tūmau.

I tua atu, ki te reti koe i nga kaitoro mai i etahi kaihautu, karekau nga kaihautu "pai" e aro he pai ake to mahi. Ko ta raatau mahi ko te whakarite kia whakamahia to ratou rino kia pai rawa atu. Na reira, ma te taunoa ka taea e ratou te aratau penapena hiko pona ki runga i te punaha whakahaere.

Mena kei te whakamahi koe i enei mea ki runga i te tūmau me te papaunga raraunga kei raro i nga kawenga taumaha, ko to whiringa ko acpi_cpufreq + permormance. Ahakoa te ondemand ka raru ano.

Ko Intel_pstate he taraiwa rereke. Na inaianei kua hoatu te manakohanga ki tenei, no te mea kei muri ka pai ake te mahi.

Na, ko te kawana he mahi anake. Ko te tono, te penapena hiko me era atu mea katoa ehara i a koe.

Ko nga hua o te whakamaarama tātaritanga PostgreSQL ka rereke pea ma te maha o nga ota o te rahi mena ka taea e koe te penapena hiko, na te mea ko te PTM kei raro i to papaunga raraunga ka rere i runga i te ahua ohorere.

Ka whakaurua pea enei taonga ma te taunoa. Ata titiro ki te kite mena kua whakakāhia e ratou ma te taunoa. He tino raruraru nui tenei.

Ko te whakatika Linux hei whakapai ake i te mahi PostgreSQL. Ilya Kosmodemyansky

A, i te mutunga, i hiahia ahau ki te mihi ki nga taangata o ta matou roopu PosgreSQL-Consulting DBA, ara a Max Boguk me Alexey Lesovsky, e anga whakamua ana i tenei kaupapa ia ra. A ka ngana matou ki te mahi i nga mea pai e taea ana e matou mo o taatau kiritaki kia pai ai te mahi mo ratou. He rite ki nga tohutohu haumaru rererangi. Ko nga mea katoa i konei ka tuhia ki te toto. Ko enei nati ka kitea i roto i te tukanga o etahi momo raruraru. Kei te koa ahau ki te whakapuaki i a raatau ki a koe.

Nga Utai:

Mauruuru koe! Mena, hei tauira, kei te pirangi te kamupene ki te penapena moni me te whakanoho i te paataka korero me te arorau tono ki runga i te tūmau kotahi, ki te whai ranei te kamupene i te ahua huatau o nga hoahoanga microservice, kei roto a PostgreSQL i roto i te ipu. He aha te mahi tinihanga? Ka pa te Sysctl ki te kakano katoa puta noa i te ao. Kare ano au i rongo mo nga sysctls kua mariko kia mahi motuhake i runga ipu. He cgroup anake, he waahanga noa iho o te mana whakahaere i reira. Me pehea e ora ai koe me tenei? Mena kei te pirangi koe ki te mahi, katahi ka whakahaere i te PostgreSQL i runga i te tuumau taputapu motuhake ka whakatangihia?

E toru pea nga huarahi i whakautua e matou to patai. Mena kaore matou e korero ana mo te tūmau taputapu ka taea te whakarite, me etahi atu, ka okioki, ka pai nga mea katoa me te kore enei tautuhinga. Mena kei a koe te taumahatanga ka hiahia koe ki te whakarite i enei whakaritenga, katahi ka tae mai koe ki te kaimau rino i mua atu i enei tautuhinga.

He aha te raruraru? Mena he miihini mariko tenei, tera pea he maha nga raru ka pa ki a koe, hei tauira, i runga i te nuinga o nga miihini mariko kaore i te rite te roa o te kōpae. Ahakoa he pai te whakaputanga o te kōpae, na tetahi i rahua te tauwhitinga I/O kaore e tino pa ki te whakaputanga toharite i puta i te wa o te waahi tirotiro, i te wa ranei e tuhi ana ki te WAL, katahi ka tino mate te papaaarangi mai i tenei. A ka kite koe i tenei i mua i to pa ki enei raru.

Mena kei a koe te NGINX i runga i te tūmau kotahi, ka raru ano koe. Ka whawhai ia mo te mahara tahi. A kaore koe e tae ki nga raru e whakaahuahia ana i konei.

Engari i tetahi atu taha, ka whai take tonu etahi o enei tawhā ki a koe. Hei tauira, whakaturia te dirty_ratio ki te sysctl kia kore ai e porangi - ahakoa he aha, ka awhina tenei. I tetahi ara, i tetahi atu ranei, ka whai taunekeneke koe me te kōpae. A ka rite ki te tauira he. Ko te tikanga he taunoa tenei mo nga tawhā i whakaatuhia e au. A i roto i tetahi take he pai ake te whakarereke i a raatau.

Engari tera pea he raru mo NUMA. Ko te VmWare, hei tauira, he pai te mahi me te NUMA me nga ritenga rereke. Na konei me whiriwhiri koe - he kaimau rino, he rino kore ranei.

He patai taku mo Amazon AWS. He whakaahua kua whirihorahia. Ko tetahi o ratou ko Amazon RDS. He ritenga ritenga mo o raatau punaha whakahaere?

He tautuhinga kei reira, engari he rereke nga tautuhinga. I konei ka whirihorahia e matou te punaha whakahaere e pa ana ki te pehea e whakamahia ai e te putunga raraunga tenei mea. A tera ano etahi tawhā hei whakatau ki hea me haere inaianei, penei i te hanga. Arā, he nui rawa ngā rauemi e hiahiatia ana, ka kainga e tatou ināianei. Whai muri i tenei, ka whakakahangia e Amazon RDS enei rauemi, ka heke te mahi ki reira. He korero takitahi mo te timatatanga o te tangata ki te whakararuraru i tenei take. I etahi wa ka tino angitu. Engari kaore tenei e pa ana ki nga tautuhinga OS. He rite ki te hacking te kapua. He korero rereke tera.

He aha te take karekau he painga o nga wharangi nui a Transparent ki te Huge TLB?

Kaua e hoatu. Ka taea te whakamarama i tenei ma nga huarahi maha. Engari i roto i te meka kare noa ratou e hoatu. He aha te hitori o PostgreSQL? I te tiimatanga, ka tohatohahia he waahanga nui o te mahara tahi. Ahakoa he maamaa, he kore ranei, he mea kore rawa. Ko te mea ka tu ratou i te timatanga ka whakamarama nga mea katoa. Mena he nui te mahara ka hiahia koe ki te hanga ano i te wahanga shared_memory, katahi ka whai take nga wharangi nui Transparent. I roto i te PostgreSQL, ka tohatoha noa i roto i te waahanga nui i te tiimatanga, katahi ka kore he mea motuhake ka tupu ki reira. Ae ra, ka taea e koe te whakamahi, engari he tupono ka puta he pirau o shared_memory ka toha ano tetahi mea. Kaore a PostgreSQL e mohio mo tenei.

Source: will.com

Tāpiri i te kōrero