PHP-FPM sozlamalari: maksimal ishlash uchun pm statikidan foydalaning

PHP-FPM sozlamalari: maksimal ishlash uchun pm statikidan foydalaning

Ushbu maqolaning tahrirlanmagan versiyasi dastlab nashr etilgan haydenjames.io va uning ruxsati bilan shu yerda nashr etilgan muallif.

PHP-FPM-ni o'tkazish qobiliyatini oshirish, kechikishni kamaytirish va protsessor va xotiradan barqarorroq foydalanish uchun qanday qilib eng yaxshi sozlashni qisqacha aytib beraman. Odatiy bo'lib, PHP-FPM-dagi PM (jarayon menejeri) qatori Dinamik, va agar sizda etarli xotira bo'lmasa, unda o'rnatish yaxshiroqdir so'rov bo'yicha; talabda. Keling, php.net hujjatlariga asoslangan ikkita boshqaruv variantini solishtiramiz va mening sevimlilarim ulardan qanday farq qilishini bilib olaylik. statik katta trafik uchun pm:

pm = dinamik - bolalar jarayonlari soni quyidagi direktivalar asosida dinamik ravishda sozlangan: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm = talab - jarayonlar talab bo'yicha yaratiladi (dinamik yaratishdan farqli o'laroq, xizmat ishga tushganda pm.start_servers ishga tushirilganda).
pm = statik β€” bolalar jarayonlari soni belgilangan va parametr bilan ko'rsatilgan pm.max_children.

Tafsilotlar uchun qarang php-fpm.conf global direktivalarining to'liq ro'yxati.

PHP-FPM jarayon menejeri va protsessor chastotasi boshqaruvchisi o'rtasidagi o'xshashliklar

Bu mavzudan tashqari tuyulishi mumkin, lekin men buni PHP-FPM konfiguratsiyasi mavzusiga bog'lamoqchiman. Protsessorning sekinlashishini kamida bir marta - noutbukda, virtual mashinada yoki maxsus serverda kim boshdan kechirmagan? CPU chastotasini o'lchashni eslaysizmi? Bu variantlar uchun mavjud nix va Windows protsessor gaz kelebeği sozlamasini o'zgartirish orqali tizimning ishlashi va sezgirligini oshirishi mumkin so'rov bo'yicha; talabda haqida ishlash*. Bu safar keling, tavsiflarni solishtiramiz va o'xshashliklarni ko'rib chiqamiz:

gubernator=talab β€” joriy yukga qarab protsessor chastotasini dinamik masshtablash. Tezlik bilan maksimal chastotaga o'tadi va keyin harakatsizlik davrlari ko'payishi bilan uni kamaytiradi.
gubernator = konservativ = joriy yukga qarab dinamik chastotali masshtablash. Chastotani talabga qaraganda tezroq oshiradi va kamaytiradi.
Gubernator = ishlash β€” chastota har doim maksimal.

Tafsilotlar uchun qarang protsessor chastotasi regulyatori parametrlarining to'liq ro'yxati.

O'xshashliklarni ko'rasizmi? Sizni undan foydalanish eng yaxshisi ekanligiga ishontirish uchun ushbu taqqoslashni ko'rsatmoqchi edim pm statik PHP-FPM uchun.

Protsessor regulyatori parametri uchun bajarish ishlashni xavfsiz oshirishga yordam beradi, chunki u deyarli butunlay serverning CPU chegarasiga bog'liq. Bunga qo'shimcha ravishda, albatta, harorat, batareya zaryadi (noutbukda) va protsessorni doimiy ravishda 100% ishlashining boshqa yon ta'siri kabi omillar ham mavjud. Ishlash sozlamalari protsessorning eng tez ishlashini ta'minlaydi. Masalan, haqida o'qing Raspberry Pi-dagi force_turbo parametri, uning yordamida RPi paneli regulyatordan foydalanadi bajarish, bu erda protsessorning soat tezligi pastligi tufayli unumdorlikning yaxshilanishi sezilarli bo'ladi.

Maksimal server ishlashiga erishish uchun pm statikidan foydalanish

PHP-FPM opsiyasi pm statik ko'p jihatdan serverdagi bo'sh xotiraga bog'liq. Xotira past bo'lsa, tanlash yaxshidir so'rov bo'yicha; talabda yoki Dinamik. Boshqa tomondan, agar sizda xotira bo'lsa, pm ni o'rnatish orqali PHP jarayon menejerining qo'shimcha xarajatlaridan qochishingiz mumkin statik maksimal server sig'imi. Boshqacha qilib aytganda, agar hamma narsa yaxshi hisoblangan bo'lsa, siz o'rnatishingiz kerak pm.statik bajarilishi mumkin bo'lgan PHP-FPM jarayonlarining maksimal hajmiga, kam xotira yoki kesh bilan bog'liq muammolar yaratmasdan. Ammo unchalik baland emaski, u protsessorlarni siqib chiqaradi va bajarilishini kutayotgan bir qator PHP-FPM operatsiyalarini to'playdi..

PHP-FPM sozlamalari: maksimal ishlash uchun pm statikidan foydalaning

Yuqoridagi skrinshotda server mavjud pm = statik va pm.max_children = 100, va bu mavjud 10 dan taxminan 32 Gb ni egallaydi. Ajratilgan ustunlarga e'tibor bering, bu erda hamma narsa aniq. Ushbu skrinshotda Google Analytics-da taxminan 200 ta faol foydalanuvchi (60 soniyadan ko'proq) bor edi. Ushbu darajada, PHP-FPM bolalar jarayonlarining taxminan 70% hali ham bo'sh. Bu shuni anglatadiki, PHP-FPM har doim joriy trafikdan qat'i nazar, server resurslarining maksimal miqdoriga o'rnatiladi. Bo'sh turgan jarayon tirbandlik cho'qqilarini kutadi va bir zumda javob beradi. Ungacha kutishingiz shart emas pm bolalar jarayonlarini yaratadi va muddat tugashi bilan ularni tugatadi pm.process_idle_timeout. Men qiymatni juda yuqori qilib qo'ydim pm.max_requestschunki bu PHP-da xotira oqishlari bo'lmagan ishlaydigan server. Siz o'rnatishingiz mumkin pm.max_requests = 0 Agar siz mavjud va kelajakdagi PHP skriptlariga to'liq ishonchingiz komil bo'lsa, statik bilan. Ammo vaqt o'tishi bilan skriptlarni qayta ishga tushirish yaxshiroqdir. Ko'p sonli so'rovlarni o'rnating, chunki biz keraksiz pm xarajatlaridan qochishni xohlaymiz. Masalan, hech bo'lmaganda pm.max_requests = 1000 - miqdoriga qarab pm.max_children va soniyada so'rovlar soni.

Skrinshotda buyruq ko'rsatilgan Linux yuqori, u (foydalanuvchi) va PHP-FPM foydalanuvchi nomi bilan filtrlangan. Faqat dastlabki 50 ga yaqin jarayonlar ko'rsatilgan (men aniq hisoblamadim), lekin asosan yuqorida terminal oynasiga mos keladigan eng yaxshi statistika ko'rsatilgan. Bu holda% CPU (%CPU) bo'yicha tartiblangan. Barcha 100 PHP-FPM jarayonlarini ko'rish uchun buyruqni bajaring:

top -bn1 | grep php-fpm

Qachon foydalanish kerak pm ondemand va dinamik

Agar siz pm dan foydalansangiz Dinamik, shunga o'xshash xatolar yuzaga keladi:

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

Parametrni o'zgartirishga harakat qiling, xatolik yo'qolmaydi, masalan Serverfault haqidagi ushbu postda tasvirlangan. Bunday holda, pm.min qiymati juda kichik edi va veb-trafik juda katta farq qilishi va yuqori cho'qqilari va chuqur vodiylariga ega bo'lgani uchun pm ni mos ravishda sozlash qiyin. Dinamik. Odatda pm ishlatiladi so'rov bo'yicha; talabda, xuddi shu postda tavsiya qilinganidek. Ammo bu yanada yomonroq, chunki so'rov bo'yicha; talabda kam yoki yo'q trafik bo'lganda bo'sh jarayonlarni nolga to'xtatadi va siz baribir trafikni o'zgartirish uchun qo'shimcha xarajatlarga ega bo'lasiz. Albatta, siz katta kutish vaqtini belgilamasangiz. Va keyin foydalanish yaxshiroqdir pm.statik + yuqori raqam pm.max_requests.

PM Dinamik va ayniqsa so'rov bo'yicha; talabda Agar sizda bir nechta PHP-FPM hovuzlari bo'lsa, foydali bo'lishi mumkin. Misol uchun, siz turli xil hovuzlarda bir nechta cPanel hisoblarini yoki bir nechta veb-saytlarni qabul qilasiz. Menda 100 dan ortiq cpanel hisoblari va 200 ga yaqin domenlari bo'lgan serverim bor va pm.static yoki hatto dinamik meni qutqarmaydi. Bu yerda sizga kerak bo'lgan yagona narsa so'rov bo'yicha; talabda, axir, veb-saytlarning uchdan ikki qismidan ko'prog'i kam yoki umuman trafikni qabul qilmaydi va bilan so'rov bo'yicha; talabda barcha bolalar jarayonlari tushib ketadi, bu bizga ko'p xotirani saqlaydi! Yaxshiyamki, cPanel ishlab chiquvchilari buni payqashdi va qiymatni sukut bo'yicha o'rnatdilar so'rov bo'yicha; talabda. Ilgari, sukut bo'lganda Dinamik, PHP-FPM band bo'lgan umumiy serverlar uchun umuman mos emas edi. Ko'pchilik foydalangan suPHP, chunki pm Dinamik bo'sh hovuzlar va cPanel PHP-FPM hisoblari bilan ham iste'mol qilingan xotira. Katta ehtimol bilan, agar trafik yaxshi bo'lsa, siz ko'p sonli PHP-FPM hovuzlari (birgalikda hosting) bo'lgan serverda joylashmaysiz.

xulosa

Agar siz PHP-FPM dan foydalanayotgan bo'lsangiz va sizning trafikingiz og'ir bo'lsa, menejerlarga ishlov bering so'rov bo'yicha; talabda ΠΈ Dinamik PHP-FPM uchun ularning o'ziga xos qo'shimcha xarajatlari tufayli o'tkazish qobiliyati cheklangan bo'ladi. Tizimingizni tushuning va PHP-FPM jarayonlarini maksimal server sigβ€˜imiga qarab sozlang. Birinchi to'plam pm.max_children maksimal pm foydalanishga bog'liq Dinamik yoki so'rov bo'yicha; talabda, va keyin bu qiymatni xotira va protsessor ortiqcha yuklanmasdan ishlaydigan darajaga oshiring. bilan buni sezasiz pm statik, Sizning xotirangizda hamma narsa borligi sababli, trafikning keskin ko'tarilishi vaqt o'tishi bilan kamroq protsessor ko'tarilishiga olib keladi va server va protsessor yukining o'rtacha ko'rsatkichlari tekislanadi. PHP-FPM jarayonining o'rtacha hajmi veb-serverga bog'liq va qo'lda sozlashni talab qiladi, shuning uchun ko'proq avtomatlashtirilgan jarayon menejerlari Dinamik ΠΈ so'rov bo'yicha; talabda - ko'proq mashhur. Umid qilamanki, maqola foydali bo'ldi.

DUP Benchmark diagrammasi qo'shildi ab. Agar PHP-FPM jarayonlari xotirada bo'lsa, ishlash ular o'tirgan va kutgan joyda xotira sarfi hisobiga ortadi. O'zingiz uchun eng yaxshi variantni toping.

PHP-FPM sozlamalari: maksimal ishlash uchun pm statikidan foydalaning

Manba: www.habr.com

a Izoh qo'shish