Suidheachadh PHP-FPM: cleachd pm static airson an coileanadh as motha

Suidheachadh PHP-FPM: cleachd pm static airson an coileanadh as motha

Chaidh dreach neo-dheasaichte den artaigil seo fhoillseachadh an toiseach haodainn.io agus air fhoillseachadh an seo le a cead ùghdar.

Innsidh mi dhut gu h-aithghearr dè an dòigh as fheàrr air PHP-FPM a rèiteachadh gus gluasad a mheudachadh, latency a lughdachadh, agus CPU agus cuimhne a chleachdadh nas cunbhalaiche. Gu gnàthach, tha an loidhne PM (manaidsear pròiseas) ann am PHP-FPM Fiùghantach, agus mura h-eil cuimhne gu leòr agad, tha e nas fheàrr a stàladh àithne. Dèanamaid coimeas eadar roghainnean smachd 2 stèidhichte air na sgrìobhainnean php.net agus faic mar a tha am fear as fheàrr leam eadar-dhealaichte bhuapa socrach pm airson trafaic àrd:

pm = fiùghantach - tha an àireamh de phròiseasan cloinne air an rèiteachadh gu dinamach stèidhichte air na stiùiridhean a leanas: pm.max_children, pm.start_servers,pm.min_spare_servers, pm.max_spare_servers.
pm = moladh - tha pròiseasan air an cruthachadh a rèir iarrtas (an taca ri cruthachadh fiùghantach, nuair a thèid pm.start_servers a chuir air bhog nuair a thòisicheas an t-seirbheis).
pm = staitigeach - tha an àireamh de phròiseasan cloinne stèidhichte agus air a chomharrachadh leis a’ pharamadair pm.max_clann.

Airson mion-fhiosrachadh, faic liosta iomlan de stiùiridhean cruinne php-fpm.conf.

Coltas eadar manaidsear pròiseas PHP-FPM agus rianadair tricead CPU

Is dòcha gu bheil seo a ’coimhead neo-àbhaisteach, ach tha mi a’ dol a cheangal seo ri cuspair rèiteachadh PHP-FPM. Cò nach d’ fhuair eòlas air slaodachadh pròiseasar co-dhiù aon uair - air laptop, inneal brìgheil no frithealaiche sònraichte. Cuimhnich air sgèileadh tricead CPU? Tha na roghainnean sin rim faighinn airson Faodaidh nix agus Windows coileanadh siostam agus freagairteachd a leasachadh le bhith ag atharrachadh suidheachadh smeòrach a’ phròiseasar bho àithne air coileanadh*. An turas seo, dèanamaid coimeas eadar na tuairisgeulan agus coimhead air na rudan a tha coltach riutha:

riaghlaiche = aireamh - sgèileadh fiùghantach air tricead pròiseasar a rèir an luchd gnàthach. Leum gu sgiobalta chun tricead as àirde agus an uairsin ga lughdachadh mar a bhios amannan neo-ghnìomhachd ag àrdachadh.
riaghladair = conservative = sgèile tricead fiùghantach a rèir an luchd gnàthach. A 'meudachadh agus a' lùghdachadh tricead nas rèidh na ondemand.
Riaghladair = coileanadh - tha tricead an-còmhnaidh aig a’ char as àirde.

Airson mion-fhiosrachadh, faic liosta iomlan de pharamadairean riaghlaiche tricead pròiseasar.

Faic na rudan a tha coltach? Bha mi airson an coimeas seo a shealltainn gus toirt a chreidsinn dhut gu bheil e nas fheàrr a chleachdadh pm statach airson PHP-FPM.

Airson paramadair riaghlaiche pròiseasar coileanaidh a’ cuideachadh le bhith ag àrdachadh coileanadh gu sàbhailte leis gu bheil e cha mhòr gu tur an urra ri crìoch CPU an fhrithealaiche. A bharrachd air an seo, gu dearbh, tha feartan ann cuideachd leithid teòthachd, cosgais bataraidh (ann an laptop) agus frith-bhuaidhean eile bho bhith a ’ruith a’ phròiseasar gu cunbhalach aig 100%. Bidh an suidheachadh coileanaidh a’ dèanamh cinnteach à coileanadh pròiseasar as luaithe. Leugh, mar eisimpleir, mu dheidhinn paramadair force_turbo ann an Raspberry Pi, leis am bi am pannal RPi a 'cleachdadh an riaghlaiche coileanaidh, far am bi an leasachadh coileanaidh nas follaisiche air sgàth astar gleoc CPU ìosal.

A’ cleachdadh pm static gus an coileanadh frithealaiche as àirde a choileanadh

Roghainn PHP-FPM pm statach gu mòr an urra ris a’ chuimhne an-asgaidh air an fhrithealaiche. Ma tha cuimhne ìosal, tha e nas fheàrr taghadh àithne no Fiùghantach. Air an làimh eile, ma tha cuimhne agad, faodaidh tu manaidsear pròiseas PHP a sheachnadh le bhith a 'suidheachadh pm socrach gu comas an fhrithealaiche as àirde. Ann am faclan eile, ma tha a h-uile càil air a thomhas gu math, feumaidh tu a stèidheachadh pm.statach chun na h-ìre as àirde de phròiseasan PHP-FPM a ghabhas cur gu bàs, gun a bhith a’ cruthachadh dhuilgheadasan le cuimhne ìosal no tasgadan. Ach chan eil e cho àrd is gu bheil e a’ faighinn thairis air na pròiseasairean agus a’ cruinneachadh dòrlach de ghnìomhachd PHP-FPM a’ feitheamh ri bhith air an cur an gnìomh.

Suidheachadh PHP-FPM: cleachd pm static airson an coileanadh as motha

Anns an dealbh gu h-àrd, tha am frithealaiche air pm = statach agus pm.max_children = 100, agus bheir seo suas mu 10 GB a-mach às an 32 a tha ri fhaighinn. Thoir aire do na colbhan comharraichte, tha a h-uile dad soilleir an seo. Anns an dealbh-sgrìn seo bha timcheall air 200 neach-cleachdaidh gnìomhach (barrachd air 60 diog) ann an Google Analytics. Aig an ìre seo, tha timcheall air 70% de phròiseasan cloinne PHP-FPM fhathast leisg. Tha seo a’ ciallachadh gu bheil PHP-FPM an-còmhnaidh air a shuidheachadh chun na h-ìre as àirde de ghoireasan frithealaiche ge bith dè an trafaic a th’ ann an-dràsta. Bidh pròiseas leisg a’ feitheamh ri stùcan trafaic agus a’ freagairt sa bhad. Chan fheum thu feitheamh gus pm cruthaichidh e pròiseasan cloinne agus an uairsin cuiridh iad crìoch orra nuair a thig an ùine gu crìch pm.process_idle_timeout. Shuidhich mi an luach gu math àrd pm.max_requestsoir is e frithealaiche obrach a tha seo gun aoidion cuimhne ann am PHP. Faodaidh tu a stàladh pm.max_requests = 0 le statach ma tha thu gu tur misneachail ann an sgriobtaichean PHP a tha ann agus san àm ri teachd. Ach tha e nas fheàrr na sgriobtaichean ath-ruith thar ùine. Suidhich àireamh mhòr de dh'iarrtasan, oir tha sinn airson cosgaisean pm neo-riatanach a sheachnadh. Mar eisimpleir, co-dhiù pm.max_requests = 1000 - a rèir meud pm.max_clann agus an àireamh de dh'iarrtasan gach diog.

Tha an dealbh-sgrìn a’ sealltainn an àithne Linux gu h-àrd, air a shìoladh le u (cleachdaiche) agus ainm-cleachdaidh PHP-FPM. Chan eil ach a’ chiad 50 no mar sin de phròiseasan air an sealltainn (cha robh mi a’ cunntadh dìreach), ach gu bunaiteach tha am bàrr a’ sealltainn na prìomh staitistig a tha a’ freagairt air uinneag a’ cheann-uidhe. Anns a' chùis seo air a rèiteachadh le % CPU (%CPU). Gus a h-uile pròiseas 100 PHP-FPM fhaicinn, ruith an àithne:

top -bn1 | grep php-fpm

Cuin a chleachdas tu pm ondemand agus fiùghantach

Ma chleachdas tu pm Fiùghantach, tha mearachdan mar seo a’ tachairt:

WARNING: [pool xxxx] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4 idle, and 59 total children

Feuch ri am paramadair atharrachadh, cha tèid a’ mhearachd air falbh, mar air a mhìneachadh san dreuchd seo air Serverfault. Anns a 'chùis seo, bha an luach pm.min ro bheag, agus leis gu bheil trafaig lìn ag atharrachadh cho mòr agus gu bheil stùcan àrda agus glinn dhomhainn, tha e duilich atharrachadh gu leòr a dhèanamh air pm. Fiùghantach. Mar as trice bidh pm air a chleachdadh àithne, mar a chomhairlichear anns an aon phost. Ach tha seo eadhon nas miosa, oir àithne a’ cur crìoch air pròiseasan dìomhain gu neoni nuair nach eil ach glè bheag de thrafaig ann no nach eil ann, agus bidh thu fhathast aig a’ cheann thall de bhith ag atharrachadh trafaic. Mura h-eil, gu dearbh, tha thu a 'suidheachadh ùine feitheimh mòr. Agus an uairsin tha e nas fheàrr a chleachdadh pm.statach + àireamh àrd pm.max_requests.

PM Fiùghantach agus gu sònraichte àithne is dòcha gum bi e feumail ma tha grunn amaran PHP-FPM agad. Mar eisimpleir, bidh thu a’ toirt aoigheachd do ghrunn chunntasan cPanel no grunn làraich-lìn ann an diofar amaran. Tha frithealaiche agam le, can, 100+ cunntasan cpanel agus timcheall air 200 raon, agus cha shàbhail pm.static no fiùghantach mi. Chan eil agad ach an seo àithne, às deidh a h-uile càil, bidh còrr air dà thrian de làraich-lìn a’ faighinn glè bheag de thrafaig, no às aonais, agus le àithne tuitidh a h-uile pròiseas cloinne dheth, a shàbhaileas tòrr cuimhne dhuinn! Gu fortanach, mhothaich luchd-leasachaidh cPanel seo agus shuidhich iad an luach gu bunaiteach àithne. Roimhe sin, nuair a bha am bun-bheachd Fiùghantach, cha robh PHP-FPM freagarrach airson frithealaichean co-roinnte trang idir. Tha mòran air a chleachdadh suPHP, oir pm Fiùghantach cuimhne caitheamh eadhon le amaran leisg agus cunntasan cPanel PHP-FPM. Nas coltaiche, ma tha an trafaic math, cha bhith thu air aoigheachd air frithealaiche le àireamh mhòr de amaran PHP-FPM (aoigheachd co-roinnte).

co-dhùnadh

Ma tha thu a’ cleachdadh PHP-FPM agus gu bheil an trafaic agad trom, manaidsearan pròiseas àithne и Fiùghantach airson PHP-FPM bidh cuibhreachadh cuibhrichte mar thoradh air an àrdachadh bunaiteach aca. Tuig an siostam agad agus rèitich pròiseasan PHP-FPM a rèir comas an fhrithealaiche as àirde. A 'chiad seata pm.max_clann a rèir cleachdadh pm as àirde Fiùghantach no àithne, agus an uairsin àrdaich an luach seo gu ìre far am bi an cuimhne agus am pròiseasar ag obair gun a bhith cus luchdachadh. Mothaichidh tu sin le pm statach, leis gu bheil a h-uile càil nad chuimhne, bidh spìcean trafaic ag adhbhrachadh nas lugha de spìcean CPU thar ùine, agus bidh cuibheasachd luchd-frithealaidh is CPU a’ fàs rèidh. Tha meud pròiseas cuibheasach PHP-FPM an urra ris an t-seirbheisiche lìn agus feumar rèiteachadh làimhe, agus mar sin tha manaidsearan pròiseas nas fèin-ghluasadach Fiùghantach и àithne - nas mòr-chòrdte. Tha mi an dòchas gun robh an artaigil feumail.

ÙRACHADH Clàr slat-tomhais air a chur ris ab. Ma tha pròiseasan PHP-FPM mar chuimhneachan, bidh coileanadh ag àrdachadh aig cosgais caitheamh cuimhne far am bi iad nan suidhe agus a ’feitheamh. Lorg an roghainn as fheàrr dhut fhèin.

Suidheachadh PHP-FPM: cleachd pm static airson an coileanadh as motha

Source: www.habr.com

Cuir beachd ann