Ինչպե՞ս միացնել և վերահսկել 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 կարգավիճակի էջը և վերահսկել այն՝ օգտագործելով ձեր նախընտրած գործիքները: