Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

Transcript of the 2015 report by Ilya Kosmodemyansky "Linux tuning to improve PostgreSQL performance"

Hoʻokaʻawale: ʻIke wau ʻo Nowemapa 2015 kēia hōʻike - ʻoi aku ma mua o 4 mau makahiki i hala a ua nui ka manawa i hala. ʻAʻole kākoʻo hou ʻia ka mana 9.4 i kūkākūkā ʻia ma ka hōʻike. I nā makahiki 4 i hala iho nei, ua hoʻokuʻu ʻia nā 5 hou o PostgreSQL, a ua hoʻokuʻu ʻia nā mana 15 o ka kernel Linux. Inā kākau hou ʻoe i kēia mau paukū, e hoʻopau ʻoe i kahi hōʻike ʻokoʻa. Eia naʻe mākou e noʻonoʻo nei i ka hoʻoponopono Linux kumu no PostgreSQL, e pili mau ana i kēia lā.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky


ʻO Ilya Kosmodemyansky koʻu inoa. Hana wau ma PostgreSQL-Consulting. A i kēia manawa, e kamaʻilio liʻiliʻi wau e pili ana i ka mea e hana ai me Linux e pili ana i nā ʻikepili i ka laulā a me PostgreSQL ma ke ʻano, no ka mea, ua like nā loina.

He aha kā mākou e kamaʻilio ai? Inā ʻoe e kamaʻilio me PostgreSQL, a laila pono ʻoe e lilo i admin UNIX. He aha ka manaʻo? Inā mākou e hoʻohālikelike iā Oracle a me PostgreSQL, a laila ma Oracle pono ʻoe e 80% DBA database admin a me 20% Linux admin.

Me PostgreSQL he mea paʻakikī loa. Me PostgreSQL pono ʻoe e ʻike maikaʻi aʻe i ka hana ʻana o Linux. A i ka manawa like, e holo liʻiliʻi ma hope o ka locomotive, no ka mea i kēia manawa ua hoʻonui maikaʻi ʻia nā mea āpau. A hoʻokuʻu ʻia nā kernels hou, a ʻike ʻia nā hana hou, hoʻomaikaʻi ka hana, etc.

No ke aha mākou e kamaʻilio nei no Linux? ʻAʻole loa no ka mea aia mākou ma ka hālāwai Linux ʻo Peter, akā no ka mea i nā kūlana hou kekahi o nā ʻōnaehana hana kūpono loa no ka hoʻohana ʻana i nā ʻikepili ma ka laulā a me PostgreSQL ma ke ʻano he Linux. No ka mea, ke ulu nei ʻo FreeBSD ma kahi ʻano ʻano ʻē. A e pilikia ana ka hana a me nā mea ʻē aʻe he nui. ʻO ka hana ʻana o PostgreSQL ma Windows ma ke ʻano he pilikia koʻikoʻi kaʻawale, ma muli o ka loaʻa ʻole o ka hoʻomanaʻo like ʻana o Windows me UNIX, ʻoiai ʻo PostgreSQL e pili pū ana i kēia, no ka mea he ʻōnaehana multi-process.

A manaʻo wau ʻaʻole makemake nui nā mea āpau i nā exotics e like me Solaris, no laila e hele kāua.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

Loaʻa i kahi mahele Linux hou ma mua o 1 syctl koho, e pili ana i ke ʻano o ke kūkulu ʻana i ka kernel. I ka manawa like, inā mākou e nānā i nā hua like ʻole, hiki iā mākou ke hoʻoponopono i kekahi mea ma nā ʻano he nui. Aia nā ʻāpana ʻōnaehana faila ma ke ʻano e kau ai iā lākou. Inā he mau nīnau kāu e pili ana i ka hoʻomaka ʻana: he aha ka mea e hiki ai i ka BIOS, pehea e hoʻonohonoho ai i ka hāmeʻa, etc.

He leo nui loa kēia e hiki ke kūkākūkā ʻia i nā lā he nui, ʻaʻole i ka hōʻike pōkole hoʻokahi, akā i kēia manawa e nānā au i nā mea koʻikoʻi, pehea e pale aku ai i kēlā mau rake i hōʻoia ʻia e pale aku iā ʻoe mai ka hoʻohana maikaʻi ʻana i kāu waihona ma Linux inā ʻoe. mai hooponopono ia lakou . A i ka manawa like, ʻo kahi mea koʻikoʻi ʻo ka nui o nā palena paʻamau ʻaʻole i hoʻokomo ʻia i nā hoʻonohonoho kūpono no ka waihona. ʻO ia hoʻi, ma ka paʻamau e hana maikaʻi ʻole a ʻaʻole paha.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

He aha nā pahuhopu hoʻokani kuʻuna ma Linux? Manaʻo wau ʻoiai ʻoe e pili ana i ka hoʻokele Linux, ʻaʻohe pono e wehewehe i ke ʻano o nā pahuhopu.

Hiki iā ʻoe ke hoʻolohe:

  • PPU.
  • Hoʻopau hoʻomanaʻo.
  • Pale.
  • 'ē aʻe. E kamaʻilio mākou e pili ana i kēia ma ka hopena no ka ʻai ʻai. ʻOiai, no ka laʻana, hiki i nā ʻāpana e like me ke kulekele mālama ola ke hoʻopili i ka hana ma kahi ʻano ʻike ʻole ʻia a ʻaʻole ke ala ʻoluʻolu loa.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

He aha nā kikoʻī o PostgreSQL a me ka waihona ma ka laulā? ʻO ka pilikia, ʻaʻole hiki iā ʻoe ke hoʻololi i kēlā me kēia nut a ʻike i ka holomua o kā mākou hana.

ʻAe, aia kekahi mau hāmeʻa, akā he mea paʻakikī ka waihona. Hoʻopili ia me nā kumuwaiwai āpau i loaʻa i ka server a makemake e launa pū me ka piha. Inā ʻoe e nānā i nā ʻōlelo aʻoaʻo a Oracle i kēia manawa e pili ana i ka hoʻohana ʻana i ka OS host, e like ia me ka ʻakaʻaka e pili ana i kēlā cosmonaut Mongolian - hānai i ka ʻīlio a ʻaʻole hoʻopā i kekahi mea. E hāʻawi kākou i ka waihona i nā kumuwaiwai a pau, na ka waihona iho e hoʻokaʻawale i nā mea a pau.

I ka manaʻo, i kekahi manawa like ke kūlana me PostgreSQL. ʻO ka ʻokoʻa, ʻaʻole hiki i ka waihona ke lawe i nā kumuwaiwai āpau nona iho, ʻo ia hoʻi ma kahi o ka pae Linux pono ʻoe e hoʻokaʻawale iā ʻoe iho.

ʻO ka manaʻo nui, ʻaʻole ia e koho i hoʻokahi pahuhopu a hoʻomaka i ke kani ʻana, no ka laʻana, ka hoʻomanaʻo, CPU a i ʻole kekahi mea like, akā e nānā i ka haʻahaʻa hana a hoʻāʻo e hoʻomaikaʻi i ka throughput e like me ka mea hiki i ka ukana i hana ʻia e nā polokalamu polokalamu maikaʻi. no mākou, me kā mākou mea hoʻohana.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

Eia ke kiʻi e wehewehe ai i ke ʻano. Aia kahi Linux OS buffer a aia kahi hoʻomanaʻo like ʻana a aia nā postgreSQL i kaʻana like. ʻO PostgreSQL, ʻaʻole like me Oracle, hana pololei wale nō ma o ka kernel buffer, ʻo ia hoʻi, i mea e komo ai kahi ʻaoʻao mai ka disk i loko o kāna hoʻomanaʻo like, pono ia e hele i ka kernel buffer a hoʻi, ke kūlana like.

Noho nā disks ma lalo o kēia ʻōnaehana. Ua kaha au i keia ma ke ano he diski. I ka ʻoiaʻiʻo, aia paha kahi mea hoʻokele RAID, etc.

A ʻo kēia hoʻokomo-hoʻopuka i kekahi ala a i ʻole ma o kēia mea.

ʻO PostgreSQL kahi waihona maʻamau. Aia kekahi ʻaoʻao i loko. A hoʻohana ʻia nā ʻaoʻao a pau i ka hoʻokomo a me ka hoʻopuka. Ke hāpai nei mākou i nā poloka i ka hoʻomanaʻo me nā ʻaoʻao. A inā ʻaʻohe mea i loaʻa, heluhelu wale mākou iā lākou, a laila nalowale lākou mai kēia cache, mai nā buffers kaʻana a hoʻopau i ka disk.

Inā hoʻololi mākou i kahi mea, a laila ua kaha ʻia ka ʻaoʻao holoʻokoʻa he lepo. Ua kaha au iā lākou ma ʻaneʻi me ka uliuli. A ʻo ia hoʻi, pono e hui pū ʻia kēia ʻaoʻao me ka waiho poloka. ʻO ia hoʻi, i ka wā i haumia ai mākou, ua komo mākou ma WAL. A i kekahi manawa kupanaha i ka manawa, ua hiki mai kahi mea i kapa ʻia ʻo checkpoint. A ua hoʻopaʻa ʻia ka ʻike ma kēia moʻolelo i hōʻea ʻo ia. A ʻo ia hoʻi, ua hui pū ʻia nā ʻaoʻao lepo a pau ma ʻaneʻi i kēlā manawa i kēia mau puʻupuʻu kaʻana like me ka disk storage e hoʻohana ana i ka fsync ma o ka buffer kernel.

No ke aha ke hana ʻia nei? Inā nalowale mākou i ka uila, a laila ʻaʻole i loaʻa iā mākou ke kūlana i nalowale nā ​​​​ʻikepili āpau. ʻO ka hoʻomanaʻo hoʻomau, ka mea a nā mea a pau i haʻi mai iā mākou, aia i ka ʻikepili ʻikepili - he wā e hiki mai ana kēia, ʻoiaʻiʻo, hoʻoikaika mākou a makemake mākou, akā i kēia manawa ke ola nei lākou i nā makahiki he 20. A, ʻoiaʻiʻo, pono e nānā ʻia kēia mau mea āpau.

A ʻo ka hana o ka hoʻonui ʻana i ka throughput, ʻo ia ka hoʻoponopono maikaʻi ʻana i kēia mau pae a pau e neʻe wikiwiki ai. ʻO ka hoʻomanaʻo kaʻana like he ʻaoʻao huna. Ma PostgreSQL ua hoʻouna mākou i kahi nīnau koho a i ʻole kekahi mea, ua kiʻi i kēia ʻikepili mai ka disk. Ua hoʻopau lākou i nā buffers like. No laila, i mea e hana maikaʻi ai kēia, pono e nui ka hoʻomanaʻo.

I mea e hana maikaʻi ai kēia mau mea a me ka wikiwiki, pono ʻoe e hoʻonohonoho pono i ka ʻōnaehana hana ma nā pae āpau. A koho i ka lako pono kaulike, no ka mea, inā loaʻa iā ʻoe kahi imbalance ma kekahi wahi, a laila hiki iā ʻoe ke hana i ka hoʻomanaʻo nui, akā ʻaʻole ia e lawelawe ʻia i ka wikiwiki.

A e hele kāua i kēlā me kēia wahi.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

I mea e holo wikiwiki ai kēia mau ʻaoʻao, pono ʻoe e hoʻokō i kēia:

  • ʻO ka mea mua, pono ʻoe e hana maikaʻi me ka hoʻomanaʻo.
  • ʻO ka lua, ʻoi aku ka maikaʻi o kēia hoʻololi i ka wā e hele ai nā ʻaoʻao mai ka hoʻomanaʻo i ka disk.
  • A ʻo ke kolu, pono nā disks maikaʻi.

Inā loaʻa iā ʻoe ka 512 GB o RAM i loko o ke kikowaena a pau nā mea a pau i kahi paʻakikī SATA me ka ʻole o kahi huna huna, a laila e lilo ka kikowaena waihona holoʻokoʻa ʻaʻole he paukena wale nō, akā he paukena me kahi interface SATA. E holo pololei ʻoe iā ia. ʻAʻohe mea e hoʻopakele iā ʻoe.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

E pili ana i ka helu mua me ka hoʻomanaʻo, ʻekolu mau mea e paʻakikī loa ai ke ola.

ʻO ka mua o lākou ʻo NUMA. ʻO NUMA kahi mea i hana ʻia e hoʻomaikaʻi i ka hana. Ma muli o ke kaumaha o ka hana, hiki ke hoʻonui ʻia nā mea like ʻole. A ma kāna ʻano hou o kēia manawa, ʻaʻole maikaʻi loa ia no nā noi e like me nā waihona e hoʻohana ikaika nei i ka ʻaoʻao cache shared buffers.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

Ma kahi pōkole. Pehea ʻoe e ʻike ai inā hewa kekahi mea iā NUMA? Loaʻa iā ʻoe kekahi ʻano kīkē leʻaleʻa, hikiwawe ka nui o kekahi CPU. I ka manawa like, ʻike ʻoe i nā nīnau ma PostgreSQL a ʻike ʻaʻohe mea like ma laila. ʻAʻole pono kēia mau nīnau i ka CPU koʻikoʻi. Hiki iā ʻoe ke hopu i kēia no ka manawa lōʻihi. ʻOi aku ka maʻalahi o ka hoʻohana ʻana i ka ʻōlelo kuhikuhi pololei mai ka hoʻomaka ʻana i ka hoʻonohonoho ʻana i ka NUMA no PostgreSQL.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

He aha ka mea e hana nei? Kū ka NUMA no Non-Uniform Memory Access. He aha ke kumu? Loaʻa iā ʻoe kahi CPU, aia ma laila kahi hoʻomanaʻo kūloko. A hiki i kēia hui hoʻomanaʻo ke huki i ka hoʻomanaʻo mai nā CPU ʻē aʻe.

Inā holo ʻoe numactl --hardware, a laila e loaʻa iā ʻoe kahi pepa nui. Ma waena o nā mea ʻē aʻe, e loaʻa kahi kahua mamao. E loaʻa nā helu - 10-20, kahi mea like. ʻAʻole kēia mau helu ma mua o ka helu o nā hops e kiʻi i kēia hoʻomanaʻo mamao a hoʻohana ma ka ʻāina. Ma ke kumu, he manaʻo maikaʻi. Hoʻoikaika maikaʻi kēia i ka hana ma lalo o nā ʻano hana.

E noʻonoʻo ʻoe he hoʻokahi CPU kāu e hoʻāʻo mua e hoʻohana i kāna hoʻomanaʻo kūloko, a laila e hoʻāʻo e huki i kahi hoʻomanaʻo hou ma o ka interconnect no kekahi mea. A loaʻa i kēia CPU kāu waihona ʻaoʻao PostgreSQL holoʻokoʻa - ʻo ia, kekahi mau gigabytes. Loaʻa iā ʻoe ka hihia ʻino loa, no ka mea ma ka CPU he liʻiliʻi ka hoʻomanaʻo i loko o kēlā module ponoʻī. A ʻo ka hoʻomanaʻo a pau i lawelawe ʻia e hele i kēia mau pilina. Ua lohi a kaumaha. A ʻo kāu mea hana e lawelawe nei i kēia node e hoʻonui mau ʻia. A ʻino ka manawa komo o kēia hoʻomanaʻo, lohi. ʻO kēia ke kūlana āu e makemake ʻole ai inā hoʻohana ʻoe i kēia no kahi waihona.

No laila, ʻo kahi koho kūpono loa no ka waihona ʻikepili no ka ʻōnaehana hana Linux ʻaʻole ʻike i ka mea e hana nei ma laila. No laila ke komo i ka hoʻomanaʻo e like me ia.

No ke aha ia? Me he mea lā ʻo ia ke ʻano ʻē aʻe. Hoʻokahi kumu maʻalahi kēia: pono mākou i ka hoʻomanaʻo nui no ka cache ʻaoʻao - ʻumi, haneli mau gigabytes.

A inā mākou i hoʻokaʻawale i kēia mau mea āpau a hūnā i kā mākou ʻikepili ma laila, a laila ʻoi aku ka nui o ka loaʻa mai ka hoʻohana ʻana i ka cache ma mua o ka loaʻa ʻana mai kahi ala paʻakikī i ka hoʻomanaʻo. A pēlā mākou e pōmaikaʻi ai i ka hoʻohālikelike ʻana i ka ʻoiaʻiʻo e komo pono mākou i ka hoʻomanaʻo me ka hoʻohana ʻana iā NUMA.

No laila, ʻelua mau ala ma aneʻi i kēia manawa, a hiki i ka wā e hiki mai ana, a ʻaʻole hiki i ka ʻikepili ponoʻī ke ʻike i nā CPU e holo nei a ma kahi e pono ai e huki i kahi mea.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

No laila, ʻo ke ala kūpono e hoʻopau loa i ka NUMA, no ka laʻana, ke hoʻomaka hou. I ka hapanui o nā hihia, ʻo ka lanakila o ka nui o ka nui o ka nīnau ʻoi aku ka maikaʻi.

Aia kekahi koho. Hoʻohana pinepine mākou iā ia ma mua o ka mea mua, no ka mea ke hele mai kahi mea kūʻai aku iā mākou no ke kākoʻo, ʻo ka rebooting i ke kikowaena he mea nui iā ia. He ʻoihana kāna ma laila. A pilikia lākou no ka NUMA. No laila, ke hoʻāʻo nei mākou e hoʻopau iā ia ma nā ala liʻiliʻi ma mua o ka reboot, akā e makaʻala i ka nānā ʻana ua pio. No ka mea, e like me ka hōʻike ʻana o ka ʻike, maikaʻi ke hoʻopau mākou i ka NUMA ma ke kaʻina hana PostgreSQL makua, akā ʻaʻole pono ia e hana. Pono mākou e nānā a ʻike ua pio maoli ʻo ia.

Aia kekahi pou maikaʻi na Robert Haas. ʻO kēia kekahi o ka PostgreSQL committers. ʻO kekahi o nā mea hoʻomohala koʻikoʻi o nā giblets haʻahaʻa haʻahaʻa. A inā ʻoe e hahai i nā loulou mai kēia pou, wehewehe lākou i kekahi mau moʻolelo waihoʻoluʻu e pili ana i ka hana paʻakikī o NUMA i ke ola o ka poʻe. E nānā, e noʻonoʻo i ka papa inoa o ka luna hoʻoponopono o nā mea e pono e hoʻonohonoho ʻia ma ke kikowaena i mea e hana maikaʻi ai kā mākou waihona. Pono e kākau ʻia kēia mau hoʻonohonoho a nānā ʻia, no ka mea inā ʻaʻole ia e maikaʻi loa.

E ʻoluʻolu e pili kēia i nā hoʻonohonoho āpau aʻu e kamaʻilio ai. Akā ʻo ka maʻamau e hōʻiliʻili ʻia nā waihona ma ke ʻano master-slave no ka hoʻomanawanui hewa. Mai poina e hana i kēia mau hoʻonohonoho i ke kauā no ka mea i kekahi lā e loaʻa iā ʻoe kahi pōʻino a hoʻololi ʻoe i ke kauā a lilo ia i haku.

Ma kahi pilikia pilikia, inā ʻino loa nā mea a pau, kani mau kāu kelepona a hele mai kou haku me kahi lāʻau nui, ʻaʻohe ou manawa e noʻonoʻo ai e nānā. A he mea pōʻino paha nā hopena.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

ʻO ka helu aʻe he mau ʻaoʻao nui. He paʻakikī nā ʻaoʻao nui e hoʻāʻo kaʻawale, a ʻaʻohe kumu o ka hana ʻana pēlā, ʻoiai aia nā benchmarks hiki ke hana i kēia. He maʻalahi lākou iā Google.

He aha ke kumu? Loaʻa iā ʻoe kahi kikowaena kumukūʻai nui me ka nui o ka RAM, no ka laʻana, ʻoi aku ma mua o 30 GB. ʻAʻole ʻoe e hoʻohana i nā ʻaoʻao nui. 'O ia ho'i, loa'a iā 'oe ka overhead e pili ana i ka ho'ohana ho'omana'o. A ʻo kēia overhead mamao loa mai ka ʻoluʻolu loa.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

No ke aha ia? No laila he aha ka hana? Hāʻawi ka ʻōnaehana hana i ka hoʻomanaʻo i nā ʻāpana liʻiliʻi. He mea maʻalahi, ʻo ia ke ʻano o ka moʻolelo. A inā mākou e hele i nā kikoʻī, pono e unuhi ka OS i nā ʻōlelo kikoʻī i nā ʻōlelo kino. A ʻaʻole maʻalahi kēia kaʻina hana, no laila e hūnā ka OS i ka hopena o kēia hana ma ka Translation Lookaside Buffer (TLB).

A no ka mea he huna huna ka TLB, ala mai nā pilikia a pau i loko o kahi huna i kēia kūlana. ʻO ka mea mua, inā he nui kāu RAM a ua hoʻokaʻawale ʻia i nā ʻāpana liʻiliʻi, a laila lilo kēia buffer i mea nui loa. A inā nui ka huna huna, ʻoi aku ka lohi o ka huli ʻana. He olakino ke poʻo a lawe ʻo ia i ka lewa, ʻo ia hoʻi ke hoʻopau ʻia ka RAM e kekahi mea hewa. ʻO kēia manawa.

ʻElua - ʻoi aku ka nui o ka ulu ʻana o ka cache i kēlā ʻano kūlana, ʻoi aku ka nui o ka loaʻa ʻana o kahi huna huna. A e emi koke ana ka pono o keia huna huna i ka pii ana o kona nui. No laila, ua hele mai nā ʻōnaehana hana me kahi ala maʻalahi. Ua hoʻohana ʻia ma Linux no ka manawa lōʻihi. Ua ʻike ʻia ma FreeBSD ʻaʻole i lōʻihi loa. Akā ke kamaʻilio nei mākou no Linux. He mau ʻaoʻao nui kēia.

A ma ʻaneʻi e hoʻomaopopo ʻia ʻo nā ʻaoʻao nui, ma ke ʻano he manaʻo, ua paʻi mua ʻia e nā kaiāulu i komo pū me Oracle a me IBM, ʻo ia hoʻi, ua manaʻo nui nā mea hana waihona e pono ai kēia no nā ʻikepili pū kekahi.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

A pehea e hiki ai ke hoalohaloha me PostgreSQL? ʻO ka mea mua, pono e ʻae ʻia nā ʻaoʻao nui i ka kernel Linux.

ʻO ka lua, pono lākou e wehewehe pono ʻia e ka sysctl parameter - ʻehia ka nui. ʻO nā helu ma ʻaneʻi mai kekahi kikowaena kahiko. Hiki iā ʻoe ke helu i ka nui o nā buffer i loaʻa iā ʻoe i hiki ke kūpono i nā ʻaoʻao nui ma laila.

A inā hoʻolaʻa ʻia kāu kikowaena holoʻokoʻa iā PostgreSQL, a laila kahi hoʻomaka maikaʻi e hoʻokaʻawale i ka 25% o ka RAM i nā buffers kaʻana, a i ʻole 75% inā maopopo ʻoe e kūpono kāu waihona i kēia 75%. Hoʻomaka ʻekahi. A e noʻonoʻo, inā loaʻa iā ʻoe ka 256 GB o RAM, a laila, e like me, e loaʻa iā ʻoe ka 64 GB o nā buffers nui. E helu ma kahi o kahi palena - i ka mea e hoʻonoho ʻia ai kēia kiʻi.

Ma mua o ka mana 9.2 (inā ʻaʻole au i kuhihewa, mai ka mana 8.2), hiki ke hoʻopili iā PostgreSQL me nā ʻaoʻao nui me ka hoʻohana ʻana i kahi waihona ʻaoʻao ʻekolu. A pono e hana mau keia. ʻO ka mea mua, pono ʻoe i ka kernel e hiki ke hoʻokaʻawale pololei i nā ʻaoʻao nui. A, ʻo ka lua, i hiki i ka noi e hana pū me lākou ke hoʻohana iā lākou. ʻAʻole e hoʻohana wale ʻia pēlā. No ka hoʻokaʻawale ʻana o PostgreSQL i ka hoʻomanaʻo i ka ʻōnaehana 5 style, hiki ke hana ʻia me ka libhugetlbfs - ʻo ia ka inoa piha o ka waihona.

Ma 9.3, ua hoʻomaikaʻi ʻia ka hana ʻo PostgreSQL i ka wā e hana ana me ka hoʻomanaʻo a ua haʻalele ʻia ke ʻano hoʻokaʻawale hoʻomanaʻo ʻōnaehana 5. Ua hauʻoli loa ka poʻe a pau, no ka mea inā ʻaʻole ʻoe e hoʻāʻo e holo i ʻelua mau manawa PostgreSQL ma ka mīkini hoʻokahi, a ʻōlelo ʻo ia ʻaʻole lawa kaʻu hoʻomanaʻo like. A ʻōlelo ʻo ia e pono e hoʻoponopono ʻia ka sysctl. A aia kahi sysctl e pono ai ʻoe e hoʻomaka hou, a pēlā aku. Ma ka laulā, hauʻoli nā mea a pau. Akā ʻo ka hāʻawi ʻana i ka hoʻomanaʻo mmap i haki i ka hoʻohana ʻana i nā ʻaoʻao nui. Hoʻohana ka hapa nui o kā mākou mea kūʻai aku i nā buffer kaʻana like. A ua ʻōlelo ikaika mākou ʻaʻole e hoʻololi i ka 9.3, no ka mea ua hoʻomaka ka helu ʻana ma luna o laila i nā pākēneka maikaʻi.

Akā, ua nānā ke kaiāulu i kēia pilikia a ma 9.4 ua hana hou lākou i kēia hanana. A ma 9.4 ua ʻike ʻia kahi ʻāpana ma postgresql.conf kahi e hiki ai iā ʻoe ke hoʻāʻo, a i ʻole.

ʻO ka hoʻāʻo ka koho palekana loa. Ke hoʻomaka ʻo PostgreSQL, i ka wā e hoʻokaʻawale ai i ka hoʻomanaʻo like ʻana, hoʻāʻo ʻo ia e hopu i kēia hoʻomanaʻo mai nā ʻaoʻao nui. A inā ʻaʻole ia e hana, a laila e hoʻi i ka koho maʻamau. A inā loaʻa iā ʻoe FreeBSD a i ʻole Solaris, a laila hiki iā ʻoe ke hoʻāʻo, palekana mau.

Inā hele, ʻaʻole ia e hoʻomaka inā ʻaʻole hiki iā ia ke koho mai nā ʻaoʻao nui. Eia e pili ana i ka mea a me ka mea maikaʻi. Akā inā ua hoʻāʻo ʻoe, a laila e nānā inā loaʻa iā ʻoe ka mea āu e pono ai e hōʻike ʻia, no ka mea he nui ka lumi no ka hewa. I kēia manawa, hana wale kēia hana ma Linux.

Hoʻokahi palapala liʻiliʻi hou aʻe ma mua o ka hele ʻana aku. ʻAʻole pili ka PostgreSQL nā ʻaoʻao nui. ʻAʻole hiki iā ia ke hoʻohana maʻamau. A me nā ʻaoʻao nui Transparent no kēlā ʻano hana, ke makemake ʻia kahi ʻāpana nui o ka hoʻomanaʻo ʻana, hiki mai nā pōmaikaʻi me nā puke nui loa. Inā loaʻa iā ʻoe nā terabytes o ka hoʻomanaʻo a laila hiki ke pāʻani kēia. Inā mākou e kamaʻilio e pili ana i nā noi i kēlā me kēia lā, ke loaʻa iā ʻoe ka 32, 64, 128, 256 GB o ka hoʻomanaʻo ma kāu mīkini, a laila ʻo nā ʻaoʻao nui maʻamau ʻo Ok, a hoʻopau wale mākou iā Transparent.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

A ʻo ka mea hope loa e pili ana i ka hoʻomanaʻo ʻaʻole pili pono i ka fruitut, hiki iā ia ke hōʻino i kou ola. E hoʻopilikia nui ʻia nā throughput āpau e ka ʻoiaʻiʻo e hoʻololi mau ana ke kikowaena.

A he mea leʻaleʻa loa kēia ma nā ʻano he nui. A ʻo ka pilikia nui, ʻokoʻa ka ʻano o nā kernels hou mai nā kernel Linux kahiko. A he mea leʻaleʻa kēia mea i ka hehi ʻana, no ka mea ke kamaʻilio mākou e pili ana i kekahi ʻano hana me ka swap, hoʻopau ia me ka hiki ʻole mai o ka OOM-killer. A ʻo ka OOM-killer, ʻaʻole i hōʻea i ka manawa kūpono a hāʻule i ka PostgreSQL, ʻoluʻolu ʻole. E ʻike nā mea a pau e pili ana i kēia, ʻo ia hoʻi, a hiki i ka mea hoʻohana hope.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

He aha ka hana? Loaʻa iā ʻoe ka nui o ka RAM ma laila, hana maikaʻi nā mea āpau. Akā no kekahi kumu ke kau nei ke kikowaena i ka swap a lohi ma muli o kēia. Me he mea lā he nui ka hoʻomanaʻo, akā hiki mai kēia.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

Ma mua, ua ʻōlelo mākou i ka hoʻonohonoho ʻana i ka vm.swappiness i ʻole, ʻo ia hoʻi ka hoʻopau ʻana i ka swap. Ma mua, ʻike ʻia ʻo 32 GB o RAM a me nā mea hoʻokaʻawale like ʻole he nui nui. ʻO ke kumu nui o ka swap ʻo ia ka loaʻa ʻana o kahi e hoʻolei ai i ka ʻōpala inā hāʻule mākou. A ʻaʻole i hoʻokō hou ʻia. A laila he aha kāu e hana ai me kēia ʻōpala? He hana kēia ʻaʻole maopopo loa ke kumu e pono ai ke swap, ʻoi aku ka nui o ia ʻano.

Akā i kēia manawa hou, ʻo ia hoʻi, nā mana ʻekolu o ka kernel, ua loli ke ʻano. A inā hoʻonoho ʻoe i ka swap i ʻole, ʻo ia hoʻi, e hoʻopau iā ia, a ma hope koke a i ʻole, inā he RAM i koe, e hele mai kahi pepehi kanaka OOM iā ʻoe e pepehi i nā mea kūʻai ikaika loa. No ka mea, e noʻonoʻo ʻo ia me ia ʻano haʻahaʻa haʻahaʻa he koena liʻiliʻi a e lele mākou i waho, ʻo ia hoʻi, ʻaʻole no ka hoʻopaʻa ʻana i ke kaʻina hana, akā no ke kui ʻana i kahi mea nui ʻole. ʻO kēia mea liʻiliʻi nui e lilo i mea kūʻai ikaika o ka hoʻomanaʻo like ʻana, ʻo ia hoʻi ka luna leka. A ma hope o ia mea e maikaʻi inā ʻaʻole pono e hoʻihoʻi ʻia ke kumu.

No laila, ʻo ka mea paʻamau, e like me kaʻu e hoʻomanaʻo nei, ʻo ka hapa nui o nā māhele ma kahi o 6, ʻo ia hoʻi i ka manawa hea ʻoe e hoʻomaka ai e hoʻohana i ka swap ma muli o ka nui o ka hoʻomanaʻo i koe. Manaʻo mākou i kēia manawa e hoʻonohonoho i ka vm.swappiness = 1, no ka mea, hoʻohuli maoli kēia iā ia, akā ʻaʻole hāʻawi i nā hopena like me ka mea pepehi OOM i hiki ʻole mai a pepehi i ka mea āpau.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

He aha ka hope? Ke kamaʻilio mākou e pili ana i ka hana o nā ʻikepili a neʻe mālie i nā disks, hoʻomaka nā mea a pau e hopu i ko lākou mau poʻo. No ka mea, ʻo ka ʻoiaʻiʻo he lohi ka disk a wikiwiki hoʻi ka hoʻomanaʻo ʻana i nā mea a pau mai ka wā kamaliʻi. A ʻike nā mea a pau e loaʻa ana i ka waihona i nā pilikia hana disk.

ʻAʻole hiki mai ka pilikia hoʻokō PostgreSQL nui e pili ana i nā kiko kikoʻī no ka mea lohi ka disk. Loaʻa paha kēia ma muli o ke kaulike ʻole o ka hoʻomanaʻo a me ka bandwidth disk. Eia naʻe, ʻaʻole hiki ke kaulike ma nā wahi like ʻole. ʻAʻole i hoʻonohonoho ʻia ʻo PostgreSQL, ʻaʻole i hoʻonohonoho ʻia ka OS, ʻaʻole i hoʻonohonoho ʻia ka hāmeʻa a ʻaʻole pololei ka hāmeʻa. A ʻaʻole hiki mai kēia pilikia inā hana nā mea a pau e like me ka mea e pono ai, ʻo ia hoʻi, ʻaʻohe haʻahaʻa, a i ʻole nā ​​​​hoʻonohonoho a me nā lako i koho maikaʻi ʻia.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

He aha ia a he aha kona ʻano? ʻO ka maʻamau ka poʻe e hana pū me PostgreSQL i komo i kēia mea ma mua o hoʻokahi manawa. E wehewehe au. E like me kaʻu i ʻōlelo ai, hana ʻo PostgreSQL i nā manawa kikoʻī e hoʻolei i nā ʻaoʻao lepo i ka hoʻomanaʻo ʻana i ka disk. Inā loaʻa iā mākou ka nui o ka hoʻomanaʻo like ʻana, a laila hoʻomaka ka nānā ʻana i kahi hopena koʻikoʻi ma ka disk, no ka mea e hoʻolei i kēia mau ʻaoʻao me fsync. Hōʻea ia i ka kernel buffer a kākau ʻia i nā disks me ka hoʻohana ʻana i ka fsync. A inā nui ka nui o kēia ʻoihana, a laila hiki iā mākou ke nānā i kahi hopena maikaʻi ʻole, ʻo ia hoʻi ka hoʻohana nui ʻana i nā disks.

Eia kaʻu mau kiʻi ʻelua. E wehewehe au i kēia manawa he aha ia. ʻElua mau kiʻi hoʻoponopono manawa. ʻO ka pakuhi mua ka hoʻohana diski. Maʻaneʻi hiki i kahi kokoke i 90% i kēia manawa. Inā loaʻa iā ʻoe kahi hemahema o ka waihona me nā disks kino, me ka hoʻohana ʻana i kahi mea hoʻokele RAID ma 90%, a laila he nūhou maikaʻi kēia. ʻO ia hoʻi, ʻoi aku ka liʻiliʻi a hiki i ka 100 a pau ka I/O.

Inā loaʻa iā ʻoe kahi ʻāpana disk, a laila he moʻolelo ʻokoʻa iki. Pili ia i ke ʻano o ka hoʻonohonoho ʻana, ke ʻano o ka array, etc.

A ma ka like, ua hoʻonohonoho ʻia kahi pakuhi mai ka ʻike postgres kūloko, e hōʻike ana i ke ʻano o ka nānā ʻana. A ʻo ka waihoʻoluʻu ʻōmaʻomaʻo ma aneʻi e hōʻike ana i ka nui o nā pale, kēia mau ʻaoʻao lepo, i kēlā manawa i hōʻea i kēia wahi nānā no ka hoʻonohonoho ʻana. A ʻo kēia ka mea nui āu e ʻike ai ma aneʻi. ʻIke mākou he nui nā ʻaoʻao ma ʻaneʻi a i kekahi manawa ua paʻi mākou i ka papa, ʻo ia hoʻi, kākau a kākau mākou, eia ka ʻōnaehana disk ua maopopo loa ka hana. A he hopena koʻikoʻi ko kā mākou mākaʻikaʻi ma ka disk. ʻO ke kūpono, ʻoi aku ke ʻano o ke kūlana me kēia, ʻo ia hoʻi, ua emi ka hoʻopaʻa ʻana ma aneʻi. A hiki iā mākou ke hoʻoponopono me nā hoʻonohonoho i hoʻomau ʻia e like me kēia. ʻO ia hoʻi, liʻiliʻi ka hana hou ʻana, akā ke kākau nei mākou i kekahi mea ma ʻaneʻi.

He aha nā mea e pono ai ke hoʻopau i kēia pilikia? Inā ua hooki ʻoe iā IO ma lalo o ka waihona, ʻo ia hoʻi, e kali nā mea hoʻohana a pau i hele mai e hoʻokō i kā lākou mau noi.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

Inā ʻoe e nānā mai ka manaʻo o Linux, inā ʻoe i lawe i ka lako lako maikaʻi, hoʻonohonoho pono iā ia, hoʻonohonoho maʻamau ʻo PostgreSQL i mea e hōʻemi pinepine ai i kēia mau checkpoints, hoʻolaha iā lākou i ka manawa ma waena o kekahi, a laila e komo ʻoe i nā palena Debian paʻamau. No ka hapa nui o Linux, eia ke kiʻi: vm.dirty_ratio=20, vm.dirty_background_ratio=10.

He aha ka manaʻo? Ua puka mai kekahi daimonio lele mai ka kernel 2.6. ʻO Pdglush, e pili ana i ka mea e hoʻohana nei, e hana ana i ka hoʻolei ʻana i nā ʻaoʻao lepo mai ka kernel buffer a me ka hoʻolei ʻana i ka wā e pono ai e hoʻolei i nā ʻaoʻao lepo ʻaʻohe mea, inā ʻaʻole kōkua ka backgrouind discarding.

I ka manawa hea e hiki mai ai ke kua? Ke noho ʻia ka 10% o ka nui o ka RAM i loaʻa ma ka kikowaena e nā ʻaoʻao lepo i loko o ka kernel buffer, ua kapa ʻia kahi hana kākau-off kūikawā ma hope. No ke aha ke kumu? Ma ke ʻano he ʻāpana, e noʻonoʻo i ka nui o nā ʻaoʻao e kākau ai. A, e ʻōlelo kākou, kākau ʻo ia i nā ʻaoʻao N. A no kekahi manawa e hiamoe ana keia mea. A laila hele hou mai ʻo ia a kope i kekahi mau ʻaoʻao.

He moʻolelo maʻalahi loa kēia. ʻO ka pilikia ma ʻaneʻi e like me ka wai ʻauʻau, ke ninini ʻia i loko o kekahi paipu, kahe ia i loko o kekahi. Ua hōʻea mai kā mākou mākaʻikaʻi a inā hoʻouna ʻo ia i kekahi mau ʻaoʻao lepo no ka hoʻolei ʻana, a laila e hoʻoponopono mālie ʻia nā mea āpau mai ka kernel buffer pgflush.

Inā hoʻomau kēia mau ʻaoʻao lepo, e hōʻiliʻili lākou a hiki i ka 20%, ma hope o ka mea nui o ka OS e kākau i nā mea āpau i ka disk, no ka mea, e pau ka mana a e pōʻino nā mea āpau iā mākou. E nalowale mākou i kēia ʻikepili, no ka laʻana.

He aha ka maalea? ʻO ka hoʻopunipuni ʻo kēia mau ʻāpana i ka honua hou he 20 a me 10% o ka nui o ka RAM ma luna o ka mīkini, he mea weliweli loa lākou e pili ana i ka throughput o nā ʻōnaehana disk āu i loaʻa ai.

E noʻonoʻo ʻoe he 128 GB o RAM. Loaʻa ka 12,8 GB i kāu ʻōnaehana disk. A ʻaʻohe mea huna āu e loaʻa ai ma laila, ʻaʻohe mea āu e loaʻa ai ma laila, ʻaʻole lākou e lōʻihi.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

No laila, paipai mākou iā ʻoe e hoʻoponopono koke i kēia mau helu e pili ana i ka hiki o kāu mea hoʻokele RAID. Ua hana koke wau i ʻōlelo aʻoaʻo ma aneʻi no kahi mea hoʻokele nona ka 512 MB o ka cache.

Manaʻo ʻia nā mea a pau he maʻalahi loa. Hiki iā ʻoe ke hoʻokomo i ka vm.dirty_background i nā bytes. A hoʻopau kēia mau hoʻonohonoho i nā mea ʻelua ma mua. ʻO ka ratio ma ke ʻano maʻamau, a i ʻole nā ​​​​mea me nā bytes e hana ʻia, a laila e hana nā mea me nā bytes. Akā, no ka mea he loea DBA wau a hana pū me nā mea kūʻai aku ʻē aʻe, hoʻāʻo wau e huki i nā mauʻu a no laila, inā i loko o nā bytes, a laila i nā bytes. ʻAʻohe mea i hāʻawi i ka hōʻoiaʻiʻo ʻaʻole e hoʻohui ka luna maikaʻi i ka hoʻomanaʻo hou i ke kikowaena, hoʻomaka hou ia, a e mau ke kiʻi. E helu wale i kēia mau helu i kūpono nā mea a pau me kahi hōʻoia.

He aha ka hana inā ʻaʻole ʻoe kūpono? Ua kākau wau ua hoʻopau maikaʻi ʻia kēlā me kēia flushing, akā ʻo ka ʻoiaʻiʻo he kiʻi ʻōlelo kēia. He pilikia nui ka ʻōnaehana hana - he nui nā ʻaoʻao haumia, no laila ua hoʻopau maikaʻi ʻia ka IO i hoʻopuka ʻia e kāu mau mea kūʻai aku, ʻo ia hoʻi ua hele mai ka noi e hoʻouna i kahi nīnau sql i ka waihona, ke kali nei. ʻO kēlā me kēia hoʻokomo / puka ʻana iā ia ka mea haʻahaʻa haʻahaʻa, no ka mea, noho ʻia ka waihona e kahi mākaʻikaʻi. A i kona pau ana, aole maopopo loa. A i ka wā i hoʻokō ai ʻoe i ka flushing non-background, ʻo ia hoʻi ua noho ʻia kāu IO āpau e ia. A hiki i ka pau ʻana, ʻaʻole ʻoe e hana.

ʻElua mau mea koʻikoʻi ma ʻaneʻi ma waho o ke kiko o kēia hōʻike. Pono kēia mau hoʻonohonoho i nā hoʻonohonoho ma postgresql.conf, ʻo ia hoʻi nā hoʻonohonoho checkpoints. A pono e hoʻonohonoho pono ʻia kāu ʻōnaehana disk. Inā loaʻa iā ʻoe kahi huna ma kahi RAID, a laila pono e loaʻa iā ia kahi pākaukau. Kūʻai ka poʻe iā RAID me ka cache maikaʻi me ka ʻole o ka pā. Inā loaʻa iā ʻoe nā SSD ma RAID, a laila pono lākou i nā server, pono nā capacitors ma laila. Eia kahi papa helu kiko'ī. Aia kēia loulou i kaʻu hōʻike e pili ana i ka hoʻonohonoho ʻana i kahi disk hana ma PostgreSQL. Aia kēia mau papa inoa a pau ma laila.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

He aha hou aʻe ka mea e paʻakikī loa ai ke ola? ʻO kēia nā ʻāpana ʻelua. He mea hou lakou. Ma ka maʻamau, hiki iā lākou ke hoʻokomo i nā noi like ʻole. A hiki iā lākou ke hoʻolilo i ke ola e like me ka paʻakikī ke hoʻohuli hewa ʻia lākou.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

ʻElua mau mea hou. Ua ʻike mua ʻia lākou i ke kolu ʻekolu. ʻO kēia ka sched_migration_cost i nā nanoseconds a me sched_autogroup_enabled, ʻo ia ka mea maʻamau.

A pehea lā lākou e hoʻopau ai i kou ola? He aha ka sched_migration_cost? Ma Linux, hiki i ka mea hoʻonohonoho ke neʻe i kahi kaʻina hana mai kekahi CPU i kekahi. A no PostgreSQL, nāna e hoʻokō i nā nīnau, ʻaʻole maopopo loa ka neʻe ʻana i kahi CPU ʻē aʻe. Mai kahi manaʻo o ka ʻōnaehana hana, ke hoʻololi ʻoe i nā puka makani ma waena o ka openoffice a me ka terminal, maikaʻi paha kēia, akā no ka waihona ʻikepili ʻino loa kēia. No laila, he kulekele kūpono e hoʻonoho i ka migration_cost i kekahi waiwai nui, ma ka liʻiliʻi he mau tausani nanoseconds.

He aha ka manaʻo o kēia no ka mea hoʻonohonoho? E noʻonoʻo ʻia i loko o kēia manawa ua wela ke kaʻina hana. ʻO ia hoʻi, inā he hana lōʻihi kāu e hana nei i kekahi mea no ka manawa lōʻihi, e hoʻomaopopo ka mea hoʻonohonoho. Manaʻo ʻo ia a hiki i ka hala ʻana o kēia manawa, ʻaʻohe pono e neʻe i kēia kaʻina hana ma nā wahi ʻē aʻe. Inā i ka manawa like ke kaʻina hana i kekahi mea, a laila ʻaʻole ia e neʻe i nā wahi āpau, e hana mālie ia ma ka CPU i hāʻawi ʻia iā ia. A maikaʻi ka hopena.

ʻO ka helu ʻelua he autogroup. Aia kekahi manaʻo maikaʻi no nā haʻawina kikoʻī i pili ʻole i nā ʻikepili hou - ʻo ia ka hoʻonohonoho ʻana i nā kaʻina hana e ka terminal virtual kahi i hoʻokuʻu ʻia ai. He kūpono kēia no kekahi mau hana. I ka hoʻomaʻamaʻa, ʻo PostgreSQL kahi ʻōnaehana multi-process me kahi prefork e holo ana mai kahi pahu hoʻokahi. Loaʻa iā ʻoe kahi mea kākau laka, kahi mākaʻikaʻi, a e hui pū ʻia kāu noi mea kūʻai aku i hoʻokahi papa hana, no ka CPU. A malaila lakou e kali lokahi ai no kona kaawale ana, i mea e keakea ai kekahi i kekahi, a e noho loihi ai. He moʻolelo kēia ʻaʻole pono loa i ka hihia o ia ukana a no laila pono e hoʻopau ʻia.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

Ua ho'āʻo koʻu hoa hana ʻo Alexey Lesovsky me kahi pgbench maʻalahi, kahi i hoʻonui ai ʻo ia i ka migration_cost ma kahi kauoha o ka nui a hoʻopau i ka autogroup. ʻO ka ʻokoʻa o ka ʻenehana maikaʻi ʻole ma kahi o 10%. Aia ke kūkākūkā ma ka papa leka uila postgres kahi e hāʻawi ai nā kānaka i nā hopena o nā loli like i ka wikiwiki o ka nīnau 50%. He nui loa nā moʻolelo like.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

A ʻo ka hope, e pili ana i ke kulekele mālama mana. ʻO ka mea maikaʻi, hiki ke hoʻohana ʻia ʻo Linux ma kahi kamepiula. A e hoʻohana maikaʻi ʻia ka pākaukau. Akā hiki koke ke hoʻololi i kēia hiki ke hana ma ke kikowaena.

Eia kekahi, inā hoʻolimalima ʻoe i nā kikowaena mai kahi hoster, a laila ʻaʻole mālama ka poʻe "maikaʻi" i ʻoi aku ka maikaʻi o kāu hana. ʻO kā lākou hana e hōʻoia i ka hoʻohana pono ʻana o kā lākou hao e like me ka hiki. No laila, ma ka maʻamau hiki iā lākou ke hoʻohana i ke ʻano hoʻopakele mana kamepiula ma ka ʻōnaehana hana.

Inā hoʻohana ʻoe i kēia mea ma kahi kikowaena me kahi waihona ma lalo o ka ukana kaumaha, a laila ʻo kāu koho ʻo acpi_cpufreq + permormance. ʻOiai me ka ondemand e loaʻa nā pilikia.

He mea hoʻokele ʻokoʻa iki ʻo Intel_pstate. A i kēia manawa ua hāʻawi ʻia ka makemake i kēia, no ka mea ma hope a ʻoi aku ka maikaʻi.

A no laila, he hana wale ke kia'āina. ʻAʻole pili iā ʻoe ka Ondemand, powersave a me nā mea ʻē aʻe.

Hiki ke ʻokoʻa nā hopena o ka wehewehe wehewehe ʻana i ka PostgreSQL e kekahi mau kauoha o ka nui inā hiki iā ʻoe ke mālama i ka mana, no ka mea, e holo ana ka CPU ma lalo o kāu waihona i kahi ala ʻike ʻole.

Hiki ke hoʻokomo ʻia kēia mau mea ma ka paʻamau. E nānā pono e ʻike inā ua hoʻā lākou ma ke ʻano paʻamau. He pilikia nui loa kēia.

Hoʻoponopono Linux e hoʻomaikaʻi i ka hana PostgreSQL. Ilya Kosmodemyansky

A i ka hopena, makemake wau e ʻōlelo mahalo i nā poʻe mai kā mākou hui PosgreSQL-Consulting DBA, ʻo ia hoʻi ʻo Max Boguk lāua ʻo Alexey Lesovsky, e holomua nei i kēia mea i kēlā me kēia lā. A ke hoʻāʻo nei mākou e hana i ka mea maikaʻi loa no kā mākou mea kūʻai aku i hana nā mea āpau iā lākou. Ua like ia me nā ʻōlelo aʻoaʻo palekana mokulele. Ua kākau ʻia nā mea a pau ma ke koko. Loaʻa kēlā me kēia o kēia mau hua i ke kaʻina o kekahi ʻano pilikia. Hauʻoli wau e kaʻana like iā lākou me ʻoe.

Nīnau:

Mahalo iā ʻoe! Inā, no ka laʻana, makemake kahi hui e mālama i ke kālā a kau i ka ʻikepili a me ka loiloi noi ma kahi kikowaena hoʻokahi, a i ʻole e hahai ka ʻoihana i ke ʻano o ka ʻenehana microservice, kahi e holo ai ʻo PostgreSQL i kahi pahu. He aha ka maalea? E hoʻopili ʻo Sysctl i ka kernel holoʻokoʻa ma ka honua. ʻAʻole au i lohe i nā sysctls i hoʻokaʻawale ʻia a hana kaʻawale lākou ma kahi pahu. He cgroup wale nō a he hapa wale nō o ka mana ma laila. Pehea ʻoe e ola ai me kēia? A i ʻole inā makemake ʻoe i ka hana, a laila holo i ka PostgreSQL ma kahi kikowaena kikowaena ʻokoʻa a hoʻokani iā ​​​​ia?

Ua pane mākou i kāu nīnau ma kahi o ʻekolu mau ala. Inā ʻaʻole mākou e kamaʻilio e pili ana i kahi kikowaena hardware hiki ke hoʻopaʻa ʻia, a me nā mea ʻē aʻe, a laila hoʻomaha, e hana maikaʻi nā mea āpau me ka ʻole o kēia mau hoʻonohonoho. Inā loaʻa iā ʻoe kahi ukana e pono ai ʻoe e hana i kēia mau hoʻonohonoho, a laila e hele ʻoe i ke kikowaena hao ma mua o kēia mau hoʻonohonoho.

He aha ka pilikia? Inā he mīkini virtual kēia, a laila e loaʻa paha iā ʻoe nā pilikia he nui, no ka laʻana, me ka ʻoiaʻiʻo ma ka hapa nui o nā mīkini virtual ʻaʻole kūlike ka latency o ka disk. ʻOiai inā maikaʻi ka hoʻoili ʻana o ka disk, a laila hāʻule kekahi i ka ʻoihana I/O ʻaʻole i pili nui i ka throughput awelika i hana ʻia i ka manawa o ka mākaʻikaʻi a i ka manawa e kākau ai iā WAL, a laila e pilikia nui ka waihona mai kēia. A e ʻike ʻoe i kēia ma mua o kou holo ʻana i kēia mau pilikia.

Inā loaʻa iā ʻoe ʻo NGINX ma ka kikowaena like, e loaʻa iā ʻoe ka pilikia like. E hakakā ʻo ia no ka hoʻomanaʻo like ʻana. A ʻaʻole ʻoe e hele i nā pilikia i wehewehe ʻia ma aneʻi.

Akā ma kekahi ʻaoʻao, e pili mau ana kekahi o kēia mau ʻāpana iā ʻoe. No ka laʻana, hoʻonohonoho i ka dirty_ratio me sysctl i ʻole ia e pupule - i kekahi hihia, e kōkua kēia. Ma kekahi ala a i ʻole, e loaʻa iā ʻoe ka pilina me ka disk. A e like ia me ke kumu hewa. He paʻamau kēia no nā ʻāpana aʻu i hōʻike ai. A i kēlā me kēia hihia, ʻoi aku ka maikaʻi o ka hoʻololi ʻana iā lākou.

Akā, aia paha nā pilikia me NUMA. ʻO VmWare, no ka laʻana, hana maikaʻi me NUMA me nā ʻaoʻao ʻē aʻe. A eia ʻoe e koho - kahi kikowaena hao a i ʻole ka hao ʻole.

He nīnau kaʻu e pili ana iā Amazon AWS. Loaʻa iā lākou nā kiʻi i hoʻonohonoho mua ʻia. ʻO kekahi o lākou i kapa ʻia ʻo Amazon RDS. Aia kekahi mau hoʻonohonoho maʻamau no kā lākou ʻōnaehana hana?

Aia nā hoʻonohonoho ma laila, akā he mau hoʻonohonoho ʻokoʻa lākou. Maanei mākou e hoʻonohonoho ai i ka ʻōnaehana hana e pili ana i ka hoʻohana ʻana o ka waihona i kēia mea. A aia nā ʻāpana e hoʻoholo ai i kahi e hele ai mākou i kēia manawa, e like me ka hoʻohua ʻana. ʻO ia hoʻi, pono mākou i nā kumuwaiwai he nui, e ʻai mākou iā lākou i kēia manawa. Ma hope o kēia, hoʻopaʻa ʻo Amazon RDS i kēia mau kumuwaiwai, a hāʻule ka hana ma laila. Aia nā moʻolelo pākahi e pili ana i ka hoʻomaka ʻana o ka poʻe e hana i kēia mea. I kekahi manawa ua lanakila loa. Akā ʻaʻohe pili kēia me nā hoʻonohonoho OS. Ua like ia me ka hacking i ke ao. He moʻolelo ʻokoʻa kēlā.

No ke aha ʻaʻohe hopena o nā ʻaoʻao nui Transparent i hoʻohālikelike ʻia me Huge TLB?

Mai hāʻawi. Hiki ke wehewehe ʻia kēia ma nā ʻano he nui. Akā ʻo ka ʻoiaʻiʻo ʻaʻole lākou e hāʻawi. He aha ka mōʻaukala o PostgreSQL? I ka hoʻomaka ʻana, hoʻokaʻawale i kahi ʻāpana nui o ka hoʻomanaʻo like. ʻAʻole pili pono inā he akaka a ʻaʻole paha. ʻO kaʻoiaʻiʻo o ko lākou kūʻana i ka hoʻomaka e wehewehe i nā mea a pau. A inā he nui ka hoʻomanaʻo a pono ʻoe e kūkulu hou i ka māhele shared_memory, a laila pili nā ʻaoʻao nui Transparent. Ma PostgreSQL, hoʻokaʻawale wale ʻia i loko o kahi puʻupuʻu nui i ka hoʻomaka ʻana a ʻo ia nō, a laila ʻaʻohe mea kūikawā ma laila. Hiki iā ʻoe, ʻoiaʻiʻo, hoʻohana iā ia, akā aia kahi manawa e loaʻa ai kahi palaho o shared_memory ke hoʻokaʻawale hou i kekahi mea. ʻAʻole ʻike ʻo PostgreSQL e pili ana i kēia.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka