Do sad se nisam bas nesto posebno igrao sa Apache osim standarnog mpm-prefork-a sa mod_php ali iz vise razloga potreban mi je worker i jedna od navedenih opcija. Ono sto sam do sad pratio jeste odlican Adisov tutorijal na http://localhost.ba/Docs/Apache/UltimatePHPSetup . On ocigledno preporucuje fcgid : ).
Ono sto me nervira kod fcgid je sto ne postoji neko ‘samostalno’ upravljanje procesima pa tako php wrapperi ostaju u procesu dozivotno : )
Kakva su vasa iskustava sa fastcgi? Sta je brze,stabilnije od ove dvije opcije ?
Do sad se nisam bas nesto posebno igrao sa Apache osim standarnog mpm-prefork-a sa mod_php ali iz vise razloga potreban mi je worker i jedna od navedenih opcija. Ono sto sam do sad pratio jeste odlican Adisov tutorijal na http://localhost.ba/Docs/Apache/UltimatePHPSetup . On ocigledno preporucuje fcgid : ).
Ono sto me nervira kod fcgid je sto ne postoji neko ‘samostalno’ upravljanje procesima pa tako php wrapperi ostaju u procesu dozivotno : )
Kakva su vasa iskustava sa fastcgi? Sta je brze,stabilnije od ove dvije opcije ?
tnx.[/quote]
hehehe, ne ostaju samo moraš imati dobar fcgid.conf
Mislim da će ti se javiti Adis, ne želim da mu uskratim to zadovoljstvo, ipak je on donio fcgid u BiH
# fastcgi application lifetime (3600)
# http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidprocesslifetime
FcgidProcessLifeTime 1800
# Max total process count (1000)
# http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidmaxprocesses
FcgidMaxProcesses X
# FcgidMaxProcessesPerClass - Max process count of one class of fastcgi application (100)
# http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidmaxprocessesperclass
FcgidMaxProcessesPerClass Y
# Min process count of one class of fastcgi application
# http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidminprocessesperclass
FcgidMinProcessesPerClass 1
# http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidmaxrequestsperprocess
FcgidMaxRequestsPerProcess 2048
# (128k by default wtf)
# http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidmaxrequestlen
FcgidMaxRequestLen 512000000[/code]
Koristi sljedeću PHP wrapper skriptu za SuEXEC:
#!/bin/sh
PHPRC="/etc/php5/cgi"
PHP_FCGI_CHILDREN=0
PHP_FCGI_MAX_REQUESTS=0
export PHPRC PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS
exec /usr/bin/php-cgi
Moj tutorijal je rađen za stari mod_fcgid (1.2?), dosta verzija 2.2 i 2.3 je bilo bugovito, a tek su verzije 2.3.5 i 2.3.6 kosher (i izdate su pod okriljem Apache projekta)
Ko u 2011 koristi mod_php treba na sysadmin reedukaciju
Dodatno podpitanje(a) : ) . Recimo da imam usera amar koji u svom www direktoriju ima 5 stranica(vhostova). Podesio sam FcgidMaxProcessesPerClass 2 no koliko sam skontao svaki vhost ce da pokrene 2 procesa samim tim 5 vhostova = 10 procesa. Postoji li kakva mogucnost ogranicavanja max procesa po useru ?
I opet se onda vracam na svoj pocetni post : ). Nemam kontrole na procesima. Ovako jednostavno svaki vhost “jede” koliko hoce cak i ako stavim FcgidMaxProcessesPerClass 0 . Ako ga limitiram sa npr FcgidMaxProcesses 8 doci cu do trenutka kad ce X vhost traziti 9 proces i onda ce dobiti nesto kao error 503 sve dok ne restartam Apache ili dok neki od fcgid procesa ne “umre” sam… Da ne spominjem da je potrosnja memorije u ovom slucaju neogranicena i vrlo brzo ulazi u swap : ). Zanima me kako si ti rijesio ove stvari… ?
Postaviš FcgidMaxProcesses koliko mašina moze maksimalno izdržati (npr 20)
Postaviš FcgidMaxProcessesPerClass na 50% (10)
10 PHP procesa može odraditi popriličan broj requesta. Npr. ako za jedan request treba 150 ms, 66 req/s
Čim jedan PHP proces odradi request, spreman je za sljedeći. U tvom primjeru, ako dođe 11 zahtjev, biće odbijen, ali nema potrebe za restartom apache-a ili slično, jer dovoljno je uraditi refresh u browseru i velika je vjerovatnoća da će neki “PHP slot” biti slobodan da izvrši zahtjev. Nema govora o neograničenoj potrošnji memorije ili slično.