Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: bus08 06 Května 2012, 16:49:06
-
Zdravím,
mohl by prosím někdo poradit, kde se dá nastavit max. počet PHP procesů?
Zkouše jsem hledat v php.ini, ale bez úspěchu.
Díky
-
No, tohle jsem sice ještě nehledal, ale řekl bych, že to bude někde v nastavení apače...
-
imho to není možné zařídit, protože neexistuje žádné centrální ovládání spouštění interpretace skriptů v PHP
pokud to půjde omezit, tak asi nějakým obecným způsobem (něco jako limit na procesy celkem či tak něco...)
-
To záleží ako používaš PHP, ak ako mod_php, tak sa to nastavuje v apache - počet spustených inštancií naraz.
Ak používaš nejakú farmu na procesy (fastcgi) ako je php-fpm, tak tam sa to dá nastaviť.
-
Pokud se jedná o VPS, tak zde je počet PHP procesorů neomezený, či je nutné limit upravit tak, jak píše YaD?
-
Pokud se jedná o VPS, tak zde je počet PHP procesorů neomezený, či je nutné limit upravit tak, jak píše YaD?
Teoreticky neobmedzený, ale pamäť aj tak nepustí.
Apache 2 (+ mod_php)
V prípade, že používaš mod_php, treba upraviť apache2 (budem opisovať ubuntu), konkrétne súbor /etc/apache2/apache2.conf. Tu si nájdeš jeden z týchto odstavcov (záleží, čo používaš), ktoré sa môžu líšiť v číslach:
(Dá sa to upraviť aj bez toho, že používaš mod_php, aby ti server "rýchlejšie" odpovedal.)
Prefork:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
Worker:
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
Event:
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
Keď ich nájdeš, tak len pomeníš čísla, ktoré máš vysvetlené nad týmito pasážami, resp. mal by si mať. Inak odporúčam pozrieť do dokumentácie.
PHP-FPM
Ak chceš použiť niečo takéto, tak osobne môžem odporúčiť mpm_worker + php-fpm. Je to strašidelne rýchle a nehrozí problém s vláknami, keďže php-fpm spawnuje procesy a worker len prehadzuje robotu ;).
V súbore /etc/php5/fpm/pool.d/www.conf si nájdi:
pm.max_children = 10
A zmeň na "vhodnú" hodnotu. Je tam viac možností, ktoré odporúčam pozrieť. Napr. koľko procesov naraz sa vytvorí a pod. Vrelo odporúčam sa s tým pohrať.
Jediný kameň úrazu bude nastavenie apache2. Treba nainštalovať mod_fastcgi alebo mod_fcgi a pridať niečo takéto do virtualhostu (mod_fastcgi):
FastCgiExternalServer /var/www/php5.external -host 127.0.0.1:9000
AddHandler php5-fcgi .php
Action php5-fcgi /usr/lib/cgi-bin/php5.external
Alias /usr/lib/cgi-bin/ /var/www/
Vytiahnuté z: http://alexcabal.com/installing-apache-mod_fastcgi-php-fpm-on-ubuntu-server-maverick/
(Ja som napr. používal sockety, takže tam by to vyzeralo inak.)
P.S. Pre nginx som našiel niečo takéto: http://www.idolbin.com/blog/server-management/vps-setup-guide/setup-php-fpm-with-apc-on-ubuntu-10-04-for-faster-performance/