Sziasztok!
A közelmúltban telepítettem egy elég kevés memóriával (256 Mb) megáldott VPS-re egy apache-ot fastcgi-vel. Mivel most kezdtem el ismerkedni a sok helyen favorizált fastcgi modullal ezért elég sok sötét folt van az ismereteimben vele kapcsolatban. Ebből adódóan időről időre érdekes jelenségek jönnek elő a szerveren. Időnként HTTP 500-at dob, aminek a hátterében PHP timeout áll a logok szerint, illetve néha lesz egy rakat zombim a fastcgi-ből. Van hogy hetekig semmi gond, de van, hogy a probléma naponta előjön, gondolom terheltség függvényében. Így a tapasztaltabbak segítségét szeretném kérni, hogy ki milyen paraméterekkel szokott fastcgi-t használni apache-al? Mik azok az általános paraméterek amiknek mindenképp érdemes lenne utána járnom, illetve mik azok a paraméterek amik fontosak lehetnek egy ennyire kevés memóriával rendelkező vasnál.
Köszönöm a válaszokat!
Hozzászólások
OFF:
Sztem ha fcgi php, akkor ne apache. Vízfejű csiga.
+1, ilyen kevés memóriával bármi más, csak ne apache;)
Vagy lighttpd, vagy nginx, de inkább az utóbbit javaslom:)
+1 nginx + php-fpm
ILyen kevés memóriához nem tudok konkrét számokat javasolni, de nálam kb. így néz ki:
virtualhostonként:
AddHandler php5-fcgi .php .php4 .phtml
SuexecUserGroup user1 group1
Alias /cgi-bin2/ /var/www/_bin/h_user1/
a modules.d ben:
20_mod_fastcgi.conf (ez azt hiszem gyári)
ezek az érdekesek benne:
FastCgiConfig -idle-timeout 600 -maxClassProcesses 20 -flush -autoUpdate
FastCgiWrapper On
#mod_php nélkül:
AddHandler php5-fcgi .php .php4 .php5
Action php5-fcgi /cgi-bin2/php-fastcgi
DirectoryIndex index.php index.php4 index.phtml
Order Deny,Allow
Deny from All
Allow from env=REDIRECT_STATUS
Options ExecCGI
SetHandler fastcgi-script
A /var/www/_bin/h_user1/php-fastcgi így néz ki:
#!/bin/sh
PHP_FCGI_CHILDREN=5
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=500
export PHP_FCGI_MAX_REQUESTS
umask 0022
exec /usr/bin/php-cgi -d apc.shm_size=64m
#exec /usr/bin/php-cgi
Ehhez apc kell értelemszerűen, de anélkül is megy a kikommentezett exec.
A zombi processek normálisak, mert újra használódnak, ezért futva maradnak példányok. A PHP_FCGI_MAX_REQUESTS szabályozza, hogy hányszor használja újra, csak tipp, de ha 1-re állítod, akkor ahány php futás, annyiszor le is zárja. Remélem segítettem. Amiket bemásoltam ne vedd készpénznek, nekem így működik. Ha nagy hülyeség van benne, akkor várom a korrigálást nálam okosabbaktól.
AFAIK a zombi processz azt jelenti, hogy már befejezte a futását, kipucolták a memóriából, csak a szülőprocessz nem várt a befejezésre; ergó nem tudta beolvasni a gyerek kilépési kódját, amit addig is a rendszernek tartogatnia kell. Ezért megmarad a bejegyzés a processztáblában. Sok vizet nem zavar, de jelzi, hogy az apacs valahol kicsit elcsúszott.
Köszönöm a tippeket mindenkinek! Kicsit reszeltem az apache-on, meglátjuk mi lesz. Az nginx-en gondolkodtam már, egy próbát mindenképp fogok vele tenni, de előbb a jól bevált apache-al megyek még egy kört. Köszi!
Feltettem tegnap az nginx-et és nagyon durva sebesség beli javulást sikerült vele elérni. Gyakorlatilag amire szükség van azt tudja és állítólag megbízható is. Utóbbi majd vagy beigazolódik vagy megcáfolódik nálam. A configja kicsit szokatlan, de lényegesen egyszerűbb és néhány helyen praktikusabb első blikkre mint az apache volt. Köszönöm a tippet!
Ha fastcgi, akkor fpm, ha fpm + keves memoria, akkor ondemand.
--