๐Ÿ˜
Hosting

PHP-FPM optimizatsiyasi: yuqori yuklamali saytlar uchun tuning

02.03.2030
โ† Barcha maqolalar

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).

O'xshash maqolalar

๐Ÿ’ฐ Hosting narx taqqoslash: O'zbekistondagi va xalqaro provider'lar ๐Ÿ“ก Server monitoring vositalari: Prometheus, Grafana, Datadog va boshqalar ๐ŸŒ Edge computing hosting: hisoblashni foydalanuvchiga yaqinlashtirish ๐Ÿข Colocation server: o'z hardware'ingizni data center'da joylash
๐ŸŒ Til
๐Ÿ‡บ๐Ÿ‡ฟ O'zbek โœ“ ๐Ÿ‡บ๐Ÿ‡ฟ ะŽะทะฑะตะบ ๐Ÿ‡ท๐Ÿ‡บ ะ ัƒััะบะธะน ๐Ÿ‡ฌ๐Ÿ‡ง English