Танзимоти PHP-FPM: барои иҷрои ҳадди аксар pm статикиро истифода баред

Танзимоти PHP-FPM: барои иҷрои ҳадди аксар pm статикиро истифода баред

Варианти таҳрирнашудаи ин мақола дар аввал нашр шудааст haydenjames.io ва дар ин ҷо бо иҷозати ӯ нашр шуд муаллиф.

Ман ба шумо мухтасар мегӯям, ки чӣ гуна беҳтарин танзим кардани PHP-FPM барои баланд бардоштани ҳосилнокӣ, кам кардани таъхир ва истифодаи доимии CPU ва хотира. Бо нобаёнӣ, хати PM (менеҷери раванд) дар PHP-FPM аст динамикӣ, ва агар шумо хотираи кофӣ надошта бошед, беҳтар аст насб кунед дархостӣ. Биёед 2 варианти назоратро дар асоси ҳуҷҷатҳои php.net муқоиса кунем ва бубинем, ки дӯстдоштаи ман аз онҳо чӣ фарқ дорад статистикӣ pm барои трафики зиёд:

pm = динамикӣ - шумораи равандҳои кӯдакона дар асоси дастурҳои зерин динамикӣ танзим карда мешаванд: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm = дархост - равандҳо мувофиқи талабот эҷод карда мешаванд (баръакси эҷоди динамикӣ, вақте ки pm.start_servers ҳангоми оғози хидмат оғоз мешавад).
pm = статикӣ — шумораи процессхои кудакй мукаррар карда шуда, бо параметр нишон дода мешавад pm.max_children.

Барои тафсилот, нигаред рӯйхати пурраи дастурҳои глобалии php-fpm.conf.

Монандиҳо байни менеҷери раванди PHP-FPM ва контролери басомади CPU

Ин метавонад ғайримавзӯъ ба назар расад, аммо ман инро ба мавзӯи конфигуратсияи PHP-FPM пайванд медиҳам. Кӣ ҳадди аққал як маротиба сустшавии протсессорро эҳсос накардааст - дар ноутбук, мошини виртуалӣ ё сервери махсус? Миқёси басомади CPU-ро дар хотир доред? Ин вариантҳо барои nix ва Windows метавонанд бо тағир додани танзимоти протсессори протсессори дроссел аз корбарӣ ва вокуниши системаро беҳтар созанд дархостӣ ба ичрои*. Ин дафъа, биёед тавсифҳоро муқоиса кунем ва ба монандиҳо назар кунем:

губернатор=талаб — миқёси динамикии басомади протсессор вобаста ба сарбории ҷорӣ. Ба зудӣ ба басомади ҳадди аксар медарояд ва пас аз афзоиши давраҳои ғайрифаъолӣ онро коҳиш медиҳад.
губернатор = консерватив = миқёси басомади динамикӣ вобаста ба сарбории ҷорӣ. Басомадро нисбат ба талабот ҳамвортар зиёд ва кам мекунад.
Губернатор = иҷро — басомад ҳамеша ҳадди аксар аст.

Барои тафсилот, нигаред рӯйхати пурраи параметрҳои танзимкунандаи басомади коркардкунанда.

Монандиҳо мебинед? Ман мехостам ин муқоисаро нишон диҳам, то шуморо бовар кунонам, ки аз он беҳтар истифода мешавад бегоҳ статикӣ барои PHP-FPM.

Барои параметри танзимгари коркардкунанда иҷрои ба бехатарии баланд бардоштани самаранокӣ кӯмак мекунад, зеро он қариб пурра аз маҳдудияти CPU-и сервер вобаста аст. Илова бар ин, албатта, омилҳое низ ҳастанд, аз қабили ҳарорат, заряди батарея (дар ноутбук) ва дигар таъсири манфии пайваста кор кардани протсессор дар 100%. Танзимоти иҷроиш суръати баландтарини коркарди протсессоро таъмин мекунад. Масалан, дар бораи Параметри force_turbo дар Raspberry Pi, ки бо он панели RPi танзимкунандаро истифода мебарад иҷрои, ки дар он беҳбудии кор аз сабаби суръати пасти соати CPU бештар ба назар мерасад.

Истифодаи pm static барои ноил шудан ба иҷрои ҳадди аксар сервер

Опсияи PHP-FPM бегоҳ статикӣ асосан аз хотираи озод дар сервер вобаста аст. Агар хотира паст бошад, беҳтар аст, ки интихоб кунед дархостӣ ё динамикӣ. Аз тарафи дигар, агар шумо хотира дошта бошед, шумо метавонед бо гузоштани pm аз мудири раванди PHP канорагирӣ кунед статистикӣ ба ҳадди иқтидори сервер. Ба ибораи дигар, агар ҳама чиз хуб ҳисоб карда шавад, шумо бояд таъсис диҳед pm.static то ҳадди ниҳоии равандҳои PHP-FPM, ки метавонанд иҷро шаванд, бе эҷоди мушкилот бо хотираи кам ё кэш. Аммо он қадар баланд нест, ки он протсессорҳоро пур мекунад ва як қатор амалиёти PHP-FPM-ро ҷамъ мекунад, ки интизори иҷро шуданро доранд..

Танзимоти PHP-FPM: барои иҷрои ҳадди аксар pm статикиро истифода баред

Дар скриншоти боло, сервер дорад pm = статикӣ ва pm.max_children = 100, ва ин тақрибан 10 ГБ аз 32-и дастрасро мегирад. Ба сутунҳои таъкидшуда диққат диҳед, дар ин ҷо ҳама чиз равшан аст. Дар ин скриншот тақрибан 200 корбари фаъол (зиёда аз 60 сония) дар Google Analytics буданд. Дар ин сатҳ тақрибан 70% равандҳои кӯдаконаи PHP-FPM то ҳол бекоранд. Ин маънои онро дорад, ки PHP-FPM ҳамеша ба ҳадди ниҳоии захираҳои сервер новобаста аз трафики ҷорӣ муқаррар карда мешавад. Раванди бефоида то авҷи трафикро интизор мешавад ва фавран посух медиҳад. Ба шумо лозим нест, ки интизор шавед pm равандҳои кӯдакро эҷод мекунад ва пас аз ба охир расидани мӯҳлат онҳоро қатъ мекунад pm.process_idle_timeout. Ман арзишро хеле баланд муқаррар кардам pm.max_requestsзеро ин сервери корӣ аст, ки дар PHP ягон ихроҷи хотира надорад. Шумо метавонед насб кунед pm.max_requests = 0 бо статикӣ, агар шумо ба скриптҳои мавҷуда ва ояндаи PHP комилан боварӣ дошта бошед. Аммо беҳтар аст, ки скриптҳоро бо мурури замон аз нав оғоз кунед. Шумораи зиёди дархостҳоро таъин кунед, зеро мо мехоҳем аз хароҷоти нолозими pm канорагирӣ кунем. Масалан, ҳадди аққал pm.max_requests = 1000 - вобаста ба миқдор pm.max_children ва шумораи дархостҳо дар як сония.

Скриншот фармонро нишон медиҳад боло Linux, аз ҷониби u (корбар) ва номи корбари PHP-FPM филтр карда шудааст. Танҳо 50 ё тақрибан равандҳои аввал нишон дода шудаанд (ман дақиқ ҳисоб накардаам), аммо аслан боло омори болоро нишон медиҳад, ки ба равзанаи терминал мувофиқат мекунанд. Дар ин ҳолат аз рӯи % CPU (% CPU) мураттаб карда мешавад. Барои дидани ҳамаи 100 равандҳои PHP-FPM, фармонро иҷро кунед:

top -bn1 | grep php-fpm

Кай истифода бурдани pm ondemand ва динамикӣ

Агар шумо pm истифода баред динамикӣ, чунин хатогиҳо рух медиҳанд:

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

Кӯшиш кунед, ки параметрро тағир диҳед, хатогӣ нест намешавад, мисли дар ин мақола дар Serverfault тавсиф карда шудааст. Дар ин ҳолат, арзиши pm.min хеле хурд буд ва азбаски трафики веб хеле фарқ мекунад ва қуллаҳои баланд ва водиҳои амиқ дорад, ба таври кофӣ танзим кардани pm душвор аст. динамикӣ. Одатан pm истифода мешавад дархостӣ, чи тавре ки дар худи хамин пост тавсия шудааст. Аммо ин боз хам бадтар аст, зеро дархостӣ вақте ки трафик кам ё тамоман нест, равандҳои бекориро ба сифр қатъ мекунад ва шумо ба ҳар ҳол бо хароҷоти тағир додани трафик дучор мешавед. Агар, албатта, шумо вақти зиёди интизориро таъин накунед. Ва он гоҳ беҳтар аст, ки истифода баред pm.static + рақами баланд pm.max_requests.

PM динамикӣ ва махсусан дархостӣ метавонад муфид бошад, агар шумо ҳавзҳои сершумори PHP-FPM дошта бошед. Масалан, шумо ҳисобҳои сершумори cPanel ё вебсайтҳои сершуморро дар ҳавзҳои гуногун ҷойгир мекунед. Ман сервере дорам, масалан, 100+ ҳисобҳои cpanel ва тақрибан 200 доменҳо ва pm.static ё ҳатто динамикӣ маро наҷот дода наметавонанд. Ҳамаи шумо дар ин ҷо лозим аст дархостӣ, дар ниҳоят, зиёда аз се ду ҳиссаи вебсайтҳо трафики кам ё тамоман мегиранд ва бо дархостӣ тамоми равандҳои кӯдакон фурӯ хоҳанд рафт, ки мо хотираи зиёдеро сарфа мекунем! Хушбахтона, таҳиягарони cPanel инро пайхас карданд ва арзишро ба пешфарз муқаррар карданд дархостӣ. Пештар, вақте ки пешфарз буд динамикӣ, PHP-FPM барои серверҳои муштараки банд умуман мувофиқ набуд. Бисёриҳо истифода кардаанд suPHP, зеро бегохй динамикӣ хотираи истеъмолшуда ҳатто бо ҳавзҳои бекор ва ҳисобҳои cPanel PHP-FPM. Эҳтимол, агар трафик хуб бошад, шумо дар сервере бо шумораи зиёди ҳавзҳои PHP-FPM (хостинги муштарак) ҷойгир намешавед.

хулоса

Агар шумо PHP-FPM-ро истифода баред ва трафики шумо вазнин бошад, менеҷерони раванд дархостӣ и динамикӣ барои PHP-FPM бо сабаби хароҷоти хоси онҳо қобилияти интиқол маҳдуд хоҳад шуд. Системаи худро фаҳмед ва равандҳои PHP-FPM-ро мувофиқи иқтидори максималии сервер танзим кунед. Маҷмӯи аввал pm.max_children вобаста ба истифодаи максималии pm динамикӣ ё дархостӣ, ва он гоҳ ин арзишро то дараҷае афзоиш диҳед, ки хотира ва протсессор бидуни бори изофа кор кунанд. Шумо инро бо бегоҳ статикӣ, азбаски шумо ҳама чизро дар хотира доред, суръатҳои трафик бо мурури замон боиси кам шудани суръати CPU мегардад ва миқёси сарбории сервер ва CPU баробар мешавад. Андозаи миёнаи раванди PHP-FPM аз веб-сервер вобаста аст ва конфигуратсияи дастӣ талаб мекунад, аз ин рӯ менеҷерони равандҳои автоматикунонидашуда бештар динамикӣ и дархостӣ - маъмултар. Ман умедворам, ки мақола муфид буд.

DUP Диаграммаи бенчмарк иловашуда ab. Агар равандҳои PHP-FPM дар хотира бошанд, иҷрои он аз ҳисоби истеъмоли хотира, ки онҳо нишаста ва интизор мешаванд, меафзояд. Барои худ беҳтарин вариантро пайдо кунед.

Танзимоти PHP-FPM: барои иҷрои ҳадди аксар pm статикиро истифода баред

Манбаъ: will.com

Илова Эзоҳ