Ushbu maqolaning tahrirlanmagan versiyasi dastlab nashr etilgan
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 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
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
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..
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
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
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
Manba: www.habr.com