Варианти таҳрирнашудаи ин мақола дар аввал нашр шудааст
Ман ба шумо мухтасар мегӯям, ки чӣ гуна беҳтарин танзим кардани 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 ва контролери басомади CPU
Ин метавонад ғайримавзӯъ ба назар расад, аммо ман инро ба мавзӯи конфигуратсияи PHP-FPM пайванд медиҳам. Кӣ ҳадди аққал як маротиба сустшавии протсессорро эҳсос накардааст - дар ноутбук, мошини виртуалӣ ё сервери махсус? Миқёси басомади CPU-ро дар хотир доред? Ин вариантҳо барои nix ва Windows метавонанд бо тағир додани танзимоти протсессори протсессори дроссел аз корбарӣ ва вокуниши системаро беҳтар созанд дархостӣ ба ичрои*. Ин дафъа, биёед тавсифҳоро муқоиса кунем ва ба монандиҳо назар кунем:
губернатор=талаб — миқёси динамикии басомади протсессор вобаста ба сарбории ҷорӣ. Ба зудӣ ба басомади ҳадди аксар медарояд ва пас аз афзоиши давраҳои ғайрифаъолӣ онро коҳиш медиҳад.
губернатор = консерватив = миқёси басомади динамикӣ вобаста ба сарбории ҷорӣ. Басомадро нисбат ба талабот ҳамвортар зиёд ва кам мекунад.
Губернатор = иҷро — басомад ҳамеша ҳадди аксар аст.
Барои тафсилот, нигаред
Монандиҳо мебинед? Ман мехостам ин муқоисаро нишон диҳам, то шуморо бовар кунонам, ки аз он беҳтар истифода мешавад бегоҳ статикӣ барои PHP-FPM.
Барои параметри танзимгари коркардкунанда иҷрои ба бехатарии баланд бардоштани самаранокӣ кӯмак мекунад, зеро он қариб пурра аз маҳдудияти CPU-и сервер вобаста аст. Илова бар ин, албатта, омилҳое низ ҳастанд, аз қабили ҳарорат, заряди батарея (дар ноутбук) ва дигар таъсири манфии пайваста кор кардани протсессор дар 100%. Танзимоти иҷроиш суръати баландтарини коркарди протсессоро таъмин мекунад. Масалан, дар бораи
Истифодаи pm static барои ноил шудан ба иҷрои ҳадди аксар сервер
Опсияи PHP-FPM бегоҳ статикӣ асосан аз хотираи озод дар сервер вобаста аст. Агар хотира паст бошад, беҳтар аст, ки интихоб кунед дархостӣ ё динамикӣ. Аз тарафи дигар, агар шумо хотира дошта бошед, шумо метавонед бо гузоштани pm аз мудири раванди PHP канорагирӣ кунед статистикӣ ба ҳадди иқтидори сервер. Ба ибораи дигар, агар ҳама чиз хуб ҳисоб карда шавад, шумо бояд таъсис диҳед pm.static то ҳадди ниҳоии равандҳои PHP-FPM, ки метавонанд иҷро шаванд, бе эҷоди мушкилот бо хотираи кам ё кэш. Аммо он қадар баланд нест, ки он протсессорҳоро пур мекунад ва як қатор амалиёти PHP-FPM-ро ҷамъ мекунад, ки интизори иҷро шуданро доранд..
Дар скриншоти боло, сервер дорад 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 ва шумораи дархостҳо дар як сония.
Скриншот фармонро нишон медиҳад
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
Кӯшиш кунед, ки параметрро тағир диҳед, хатогӣ нест намешавад, мисли
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 Диаграммаи бенчмарк иловашуда
Манбаъ: will.com