Ինչպե՞ս միացնել և վերահսկել PHP-FPM կարգավիճակը Nginx-ում:
PHP-FPM (FastCGI Process Manager) PHP-ի հայտնի իրականացումն է որպես FastCGI գործընթացի կառավարիչ: Այն առաջարկում է կատարողականի զգալի բարելավումներ ավանդական PHP-ի ներդրման համեմատ և լայնորեն օգտագործվում է բարձր տրաֆիկ կայքերում: Nginx-ը հանրաճանաչ վեբ սերվեր է և հակադարձ պրոքսի, որը կարող է օգտագործվել PHP հավելվածները PHP-FPM-ի միջոցով սպասարկելու համար: Այս հոդվածում մենք կքննարկենք, թե ինչպես միացնել և վերահսկել PHP-FPM կարգավիճակը Nginx-ում:
Միացնելով PHP-FPM կարգավիճակի էջը
PHP-FPM-ն ունի ներկառուցված կարգավիճակի էջ, որն իրական ժամանակում տեղեկատվություն է տրամադրում PHP-FPM գործընթացների ներկա վիճակի մասին: Nginx-ում PHP-FPM կարգավիճակի էջը միացնելը պարզ գործընթաց է:
Նախ, բացեք PHP-FPM կազմաձևման ֆայլը՝ օգտագործելով ձեր սիրած տեքստային խմբագրիչը: Այս ֆայլի գտնվելու վայրը կարող է տարբեր լինել՝ կախված ձեր համակարգի կազմաձևից: Օրինակ, Ubuntu-ում ֆայլը գտնվում է /etc/php/7.4/fpm/pool.d/www.conf հասցեում:
Հաջորդը, հանեք հետևյալ տողերը −
pm.status_path = /status
ping.path = /ping
Այս տողերը հնարավորություն են տալիս կարգավիճակի և պինգի էջերը: Պահպանեք փոփոխությունները և վերագործարկեք PHP-FPM ծառայությունը
sudo service php7.4-fpm restart
Հաջորդը, խմբագրեք Nginx կազմաձևման ֆայլը ձեր PHP հավելվածի համար: Ավելացրեք հետևյալ տեղադրության բլոկը սերվերի բլոկին −
location ~ ^/(status|ping)$ {
access_log off;
allow 127.0.0.1;
deny all;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass 127.0.0.1:9000;
}
Տեղադրության այս բլոկը թույլ է տալիս մուտք գործել կարգավիճակ և ping էջեր միայն localhost-ից: Դուք կարող եք փոխել IP հասցեն՝ թույլ տալու մուտք գործել այլ IP հասցեից:
Պահպանեք փոփոխությունները և վերաբեռնեք Nginx կոնֆիգուրացիան -
sudo service nginx reload
Այժմ կարող եք մուտք գործել PHP-FPM կարգավիճակի էջ՝ այցելելով http://your-domain.com/status և ping էջ՝ այցելելով http://your-domain.com/ping: Եթե ամեն ինչ ճիշտ է կազմաձևված, դուք պետք է տեսնեք PHP-FPM գործընթացների մասին իրական ժամանակի տեղեկություններով էջ:
PHP-FPM կարգավիճակի մոնիտորինգ
PHP-FPM կարգավիճակի էջի մոնիտորինգը առողջ PHP հավելվածի պահպանման կարևոր մասն է: Այն թույլ է տալիս հայտնաբերել և ախտորոշել PHP-FPM գործընթացների հետ կապված խնդիրները:
PHP-FPM կարգավիճակի էջը վերահսկելու եղանակներից մեկը curl-ի նման գործիք օգտագործելն է: Օրինակ՝ կարգավիճակի մասին տեղեկություն ստանալու համար կարող եք գործարկել հետևյալ հրամանը −
curl http://your-domain.com/status
Այս հրամանը կթողարկի կարգավիճակի տեղեկատվությունը ձեր տերմինալում:
PHP-FPM կարգավիճակի էջը վերահսկելու մեկ այլ միջոց է օգտագործել մոնիտորինգի գործիք, ինչպիսին է Nagios-ը, Zabbix-ը կամ Prometheus-ը: Այս գործիքները թույլ են տալիս կարգավորել ծանուցումներ և ծանուցումներ՝ հիմնվելով PHP-FPM գործընթացների կարգավիճակի վրա:
Բացի curl-ի և Nagios-ի նման գործիքներից օգտվելուց՝ PHP-FPM կարգավիճակի էջը վերահսկելու համար, կան նաև վեբ վրա հիմնված մոնիտորինգի մի քանի գործիքներ: Հանրաճանաչ գործիք է PHP-FPM Status Page Script-ը, որը վեբ վրա հիմնված սկրիպտ է, որն ապահովում է PHP-FPM գործընթացների մանրամասն ակնարկ: Այս սկրիպտը կարող է հեշտությամբ տեղադրվել ձեր սերվերի վրա և կազմաձևվել՝ ապահովելու PHP-FPM գործընթացների իրական ժամանակի մոնիտորինգ:
Մեկ այլ տարբերակ է օգտագործել PHP-FPM-ի ներկառուցված մոնիտորինգի հնարավորությունները: PHP-FPM-ն ունի մի քանի ներկառուցված մոնիտորինգի գործիքներ, ներառյալ pm.status_path և ping.path հրահանգները, որոնք մենք ավելի վաղ միացրել ենք: Այս գործիքները մանրամասն տեղեկատվություն են տրամադրում PHP-FPM գործընթացների կարգավիճակի մասին, ներառյալ ակտիվ գործընթացների քանակը, անգործուն գործընթացների քանակը և մշակված հարցումների ընդհանուր թիվը:
Կարող եք նաև օգտագործել pm.status_listen հրահանգը՝ PHP-FPM կարգավիճակի մոնիտորինգի համար TCP/IP վարդակից միացնելու համար: Սա թույլ է տալիս օգտագործել այնպիսի գործիքներ, ինչպիսին է telnet-ը՝ վարդակից միանալու և կարգավիճակի մասին տեղեկությունները իրական ժամանակում դիտելու համար:
Կարևոր է նշել, որ չնայած PHP-FPM կարգավիճակի էջի մոնիտորինգը կարևոր է առողջ PHP հավելվածի պահպանման համար, կարևոր է նաև վերահսկել այլ չափումներ, ինչպիսիք են CPU-ն և հիշողության օգտագործումը: Այս չափումները կարող են օգնել ձեզ բացահայտել արդյունավետության խոչընդոտները և օպտիմիզացնել ձեր PHP-FPM կոնֆիգուրացիան՝ ավելի լավ կատարման համար:
PHP-FPM կարգավիճակը վերահսկելու մեկ այլ միջոց է օգտագործել երրորդ կողմի մոնիտորինգի ծառայությունները, ինչպիսիք են New Relic-ը կամ Datadog-ը: Այս ծառայությունները կարող են մանրամասն պատկերացում կազմել ձեր PHP հավելվածի աշխատանքի վերաբերյալ, ներառյալ PHP-FPM գործընթացների հետ կապված չափումները:
New Relic-ը, օրինակ, ապահովում է իրական ժամանակում կատարողականի մոնիտորինգ և ախտորոշում PHP հավելվածների համար: Այն կարող է կազմաձևվել PHP-FPM գործընթացները վերահսկելու և CPU-ի և հիշողության օգտագործման, ինչպես նաև այլ կարևոր չափումների վերաբերյալ պատկերացումներ ապահովելու համար: Այն կարող է նաև ուղարկել ծանուցումներ և ծանուցումներ, երբ գերազանցում են կատարողականի շեմերը՝ օգնելով ձեզ ակտիվորեն բացահայտել և լուծել կատարողականի խնդիրները:
Datadog-ը մոնիտորինգի մեկ այլ հայտնի ծառայություն է, որը կարող է օգտագործվել PHP-FPM գործընթացները վերահսկելու համար: Այն ապահովում է ձեր PHP հավելվածի կատարողականի իրական ժամանակի տեսանելիությունը, ներառյալ PHP-FPM գործընթացների հետ կապված մանրամասն չափումները: Այն կարող է նաև կազմաձևվել այնպես, որ ծանուցումներ և ծանուցումներ ուղարկի, երբ կատարողականի շեմերը գերազանցվեն:
Բացի PHP-FPM կարգավիճակի մոնիտորինգից, կարևոր է նաև օպտիմալացնել PHP-FPM կոնֆիգուրացիան՝ ավելի լավ կատարման համար: Կարևոր կազմաձևման պարամետրը pm.max_children դիրեկտիվն է, որը որոշում է PHP-FPM մանկական գործընթացների առավելագույն քանակը, որոնք կարող են առաջանալ մուտքային հարցումները մշակելու համար: Այս արժեքը չափազանց բարձր դնելը կարող է հանգեցնել ռեսուրսների սպառման, մինչդեռ այն չափազանց ցածր դնելը կարող է հանգեցնել վատ կատարողականի՝ երկար հերթերի պատճառով:
Կազմաձևման մեկ այլ կարևոր պարամետր է pm.max_requests հրահանգը, որը որոշում է հարցումների առավելագույն քանակը, որոնք յուրաքանչյուր PHP-FPM երեխայի պրոցես կարող է կատարել մինչև վերամշակումը: Այս արժեքը չափազանց բարձր դնելը կարող է հանգեցնել հիշողության արտահոսքի և անկայունության, մինչդեռ այն չափազանց ցածր դնելը կարող է հանգեցնել գործընթացի անհարկի վերամշակման և ծախսերի:
Կարևոր է նաև հաշվի առնել ձեր սերվերի վրա առկա ռեսուրսները PHP-FPM-ը կարգավորելիս: Օրինակ, եթե ձեր հասանելի հիշողությունը սահմանափակ է, ապա ձեզ հարկավոր է նվազեցնել pm.max_children-ի արժեքը՝ կանխելու ռեսուրսների սպառումը: Նմանապես, եթե դուք ունեք պրոցեսորի սահմանափակ ռեսուրսներ, ձեզ հարկավոր է կարգավորել pm.process_idle_timeout հրահանգը, որպեսզի թույլ չտաք, որ անգործուն գործընթացները սպառեն պրոցեսորի արժեքավոր ցիկլերը:
Վերջապես, կարևոր է նշել, որ PHP-FPM կարգավիճակը միացնելը կարող է նաև անվտանգության հետևանքներ ունենալ: Կարգավիճակի էջը կարող է արժեքավոր տեղեկություններ տրամադրել հարձակվողներին, ներառյալ ակտիվ գործընթացների և մշակված հարցումների ընդհանուր թիվը: Կարևոր է համոզվել, որ կարգավիճակի էջը հասանելի է միայն վստահելի IP հասցեներից, և որ մուտքը պատշաճ կերպով ապահովված է նույնականացման և թույլտվության միջոցով:
PHP-FPM-ի մոնիտորինգի և օպտիմալացման մեկ այլ կարևոր ասպեկտ է PHP-ի սխալների մատյանների վերլուծությունը: PHP-ի սխալների մատյանները կարող են արժեքավոր պատկերացումներ տալ հնարավոր խնդիրների և սխալների վերաբերյալ, որոնք կարող են ազդել ձեր PHP հավելվածի աշխատանքի և կայունության վրա: Վերլուծելով այս տեղեկամատյանները՝ դուք կարող եք բացահայտել և ախտորոշել PHP-FPM գործընթացների հետ կապված խնդիրները, ինչպիսիք են հիշողության արտահոսքը, հատվածավորման սխալները և այլ սխալները:
Դուք կարող եք կարգավորել PHP-ի սխալների գրանցումը` սահմանելով error_log հրահանգը ձեր PHP կազմաձևման ֆայլում: Լռելյայնորեն, PHP-ն գրանցում է սխալները համակարգի սխալների մատյանում, բայց դուք կարող եք կարգավորել այն, որպեսզի սխալները գրանցվեն որոշակի ֆայլում կամ վայրում՝ ավելի հեշտ վերլուծության և մոնիտորինգի համար:
Սխալների մատյաններից բացի, կարևոր է նաև վերահսկել այլ համակարգի և հավելվածների մատյանները հնարավոր խնդիրների համար, որոնք կարող են ազդել PHP-FPM գործընթացների վրա: Օրինակ, ձեզ կարող է անհրաժեշտ լինել վերահսկել Nginx մուտքի մատյանները և սխալների մատյանները՝ պարզելու հարցումների և պատասխանների հետ կապված հնարավոր խնդիրները:
PHP-FPM-ի կատարողականությունը օպտիմալացնելու մեկ այլ միջոց է օպերացիոն կոդերի քեշավորումն օգտագործելը: Opcode caching-ը կարող է զգալիորեն բարելավել PHP-ի աշխատանքը՝ քեշավորելով կազմված PHP կոդը և նվազեցնելով կոդերի կազմման ծախսերը յուրաքանչյուր հարցումով: Հանրաճանաչ opcode caching լուծումները ներառում են APCu, OpCache և XCache:
Եզրակացություն
Nginx-ում PHP-FPM կարգավիճակի էջը միացնելը և մոնիտորինգը պարզ և արդյունավետ միջոց է առողջ PHP հավելվածը պահպանելու համար: Հետևելով այս հոդվածում նշված քայլերին, կարող եք հեշտությամբ միացնել PHP-FPM կարգավիճակի էջը և վերահսկել այն՝ օգտագործելով ձեր նախընտրած գործիքները: