PHP-FPM (FastCGI Process Manager) โ bu PHP'ni web server (Nginx, Apache) bilan birga ishlatish uchun mo'ljallangan process manager. PHP-FPM PHP jarayonlarini boshqaradi: necha jarayon ishga tushiriladi, ular qachon shaqalanadi va o'ldiriladi, har jarayon qancha so'rovni qayta ishlaydi. To'g'ri sozlanganida PHP-FPM yuqori yuklamali saytlar uchun zarur โ minglab bir vaqtda kelgan so'rovlarni samarali qayta ishlaydi.
Asosiy parametrlar
pm โ process manager rejimi: static (doimiy son, RAM ko'p sarflaydi lekin tez), dynamic (talabga qarab, balanslashtirilgan โ eng ko'p ishlatiluvchi), ondemand (so'rov bo'lganda yaratish, RAM tejaydi lekin sekin). Tavsiya: dynamic.
pm.max_children โ eng ko'p qancha PHP jarayon parallel ishlashi mumkin. Bu eng muhim parametr โ RAM va CPU resurslariga qarab to'g'ri o'rnatish kerak. Hisoblash formulasi: (mavjud RAM - boshqa xizmatlar) / (har PHP jarayon o'rtacha RAM). Misol: 4GB RAM serverda, MySQL va Nginx uchun 1GB, har PHP jarayon 60MB ishlatadi โ max_children = 3000 / 60 = 50.
pm.start_servers โ boshlanganda ishga tushiriladigan jarayon soni. Tavsiya: max_children'ning 20-25%.
pm.min_spare_servers โ minimal bo'sh jarayon soni. Yangi so'rov kelganda darhol ishga tushish uchun zaxira. Tavsiya: max_children'ning 10-15%.
pm.max_spare_servers โ maksimal bo'sh jarayon. Bundan ortiq bo'sh jarayonlar o'chiriladi (RAM tejaydi). Tavsiya: max_children'ning 25-30%.
pm.max_requests โ har jarayon necha so'rovni qayta ishlagandan keyin yangidan ishga tushadi. Memory leak'lar oldini olish uchun. Tavsiya: 500-1000.
Status sahifasini sozlash
PHP-FPM'ning ishlash holatini kuzatish uchun status sahifa: pm.status_path = /fpm-status. Keyin nginx'da: location ~ ^/fpm-status$ { fastcgi_pass php-fpm; allow 127.0.0.1; deny all; }. Brauzerda http://saytingiz.uz/fpm-status orqali holat ko'rinadi: jarayonlar soni, faol so'rovlar, navbat.
Slowlog โ sekin so'rovlarni topish
request_slowlog_timeout = 5s โ agar so'rov 5 sekunddan ko'p ishlasa, slowlog faylga yoziladi. slowlog = /var/log/php-fpm-slow.log. Bu fayl orqali eng sekin PHP funksiyalarni topib, optimizatsiya qilish mumkin.
Sayt.uz amaliyot
Sayt.uz tariflarida PHP-FPM optimallashtirilgan: Basic Hosting'da max_children = 25, Pro Hosting'da 50, VPS'da 100+. Sotuv mavsumlarida (yakshanba aksiyalari, ramazon) max_children ni vaqtinchalik 1.5x oshiramiz. WordPress va e-commerce saytlarda PHP-FPM optimallashishi bilan sahifa yuklash 30-50% tez ishlaydi. Maslahat: pm.max_children'ni juda yuqori qo'ymang โ RAM tugaganda barcha so'rovlar yiqiladi (OOM kill).