Amikor tul lassunak erezzuk az alkalmazast, ket lehetosegunk van (lighttpd eseteben):
1. Veszunk meg nagyobb vasat
2. Veszunk meg egy vasat, es terheles-elosztast allitunk be.
A masodik igazabol helybol ket lehetoseg. Ha a webszerveren kivul tesszuk (pl. LVS, Cisco Director, Foundry ServerIron), akkor barmilyen webszerverrel megoldhato. Viszont nagyon nagy a teszteles igenye, es szukseg van meg vasra az uj webszerveren kivul is. A kereskedelmi megoldasok eseteben nem is olcso vasra.
Ha viszont lighttpd a webszerver, fastcgi az alkalmazas es csorok, de okosak vagyunk, itt egy megoldas:
A lighttpdben lehetoseg van tetszoleges szamu fcgi backend beallitasara. Ha egynel tobbet talal a konfig fajlban, magatol elosztja a bejovo kereseket a backendek kozt.
Az alabbi virtualis hostban harom PHP backendet definialtam. Az elso kettovel TCP-n at kommunikal. A harmadik egy helyi, Unix Domain Socketen at beszelgetos valtozat (azt mondjak a domain socketen at beszelgetes kevesebb CPU overheadet eredmenyez).
$HTTP["host"] =~ "tst" {
server.name = "tst"
server.document-root = "/var/www/"
fastcgi.server = ( ".php" =>
(
"R1" => ( "host" => "192.168.0.10",
"port" => 1029 ),
"R2" => ( "host" => "192.168.0.11",
"port" => 1029 ),
"S1" => ( "socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/bin/php5-cgi",
"max-procs" => 1,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "1000"))
)
)
status.statistics-url = "/server-counters"
status.status-url = "/server-status"
status.config-url = "/server-config"
}
Ahhoz, hogy ez mukodjon nehany feltetelnek teljesulnie kell:
1. A backend szervereken fenn kell lennie a tartalomnak (PHP scripteknek)
2. Minden adatbazisnak egyeb veszedelemnek elerhetonek kell lenni a backend szerverekrol is (Mivel ott fut a PHP kod)
3. Futnia kell fastcgi processznek a backendeken
A webszerver maga, amennyiben lokalisan nem fut fastcgi processz, a tartalmat csak arra hasznalja, hogy meg tudja hatarozni, letezik-e a kert fajl. Amennyiben nem, a keresre o maga kuldi ki a 404-es hibat, a backend gepek kihagyasaval.
A php fastcgi processzeket az alabbi scripttel is el lehet inditani (randa es trehany, de mukodik.):
#!/bin/bash
# Hany fcgi processzt szeretnenk futtatni
PHP_FCGI_CHILDREN=4
# Hany requestenkent induljanak ujra a gyerekek
PHP_FCGI_MAX_REQUESTS=1000
# Melyik IP cimekrol legyen elerheto az fcgi szerver
FCGI_WEB_SERVER_ADDRS="127.0.0.1,192.168.0.9"
USER=www-data
GROUP=www-data
PHP=/usr/bin/php5-cgi
PORT=1029
PIDF=/var/run/fcgi.pid
#export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS USER GROUP PHP PORT PIDF
#kicsit gyomlalt valtozat hrgy\d\d nyoman (az FCGI, PHP_FCGI kezdetu valtozokat hasznalja a cgi processz):
export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS
case $1 in
start)
/usr/bin/spawn-fcgi -P $PIDF -p $PORT -C $PHP_FCGI_CHILDREN -u $USER -g $GROUP -f $PHP 2>&1
;;
stop)
kill `cat $PIDF`
esac
Erre a scriptre csak az elso ket backend eseteben van szukseg. A harmadikat maga a helyi lighty vezenyli. A masik ket gepen nem is kell webszervernek futnia.
Egy keves statisztikat lehet latni a "server-counters" oldalon:
fastcgi.active-requests: 5
fastcgi.backend.R1.0.connected: 655
fastcgi.backend.R1.0.died: 0
fastcgi.backend.R1.0.disabled: 0
fastcgi.backend.R1.0.load: 5
fastcgi.backend.R1.0.overloaded: 0
fastcgi.backend.R1.load: 309
fastcgi.backend.R2.0.connected: 4361
fastcgi.backend.R2.0.died: 0
fastcgi.backend.R2.0.disabled: 0
fastcgi.backend.R2.0.load: 0
fastcgi.backend.R2.0.overloaded: 0
fastcgi.backend.R2.load: 53
fastcgi.backend.S1.0.connected: 4989
fastcgi.backend.S1.0.died: 0
fastcgi.backend.S1.0.disabled: 0
fastcgi.backend.S1.0.load: 0
fastcgi.backend.S1.0.overloaded: 6
fastcgi.backend.S1.load: 48
fastcgi.requests: 10005
- uid_1062 blogja
- A hozzászóláshoz be kell jelentkezni
- 1504 megtekintés
Hozzászólások
Va nkülönbség, ha a spawn-fcgi processzt start-stop-saemon indítja?
- A hozzászóláshoz be kell jelentkezni
Szerintem nincs. (Amennyiben az inditott folyamat megkapja a kornyezeti valtozokat epsegben.)
Nem teszteltem.
- A hozzászóláshoz be kell jelentkezni
Ha jól látom a környezeti változókat kapcsolókkal adod át, tehát szerintem az export amúgy is felesleges.
start-stop-daemon --start --quiet --exec /usr/bin/spawn-fcgi --pidfile $PIDF -- -P $PIDF -p $PORT -C $PHP_FCGI_CHILDREN -u $USER -g $GROUP -f $PHP
Esetleg:
start-stop-daemon --start --user $USER --group $GROUP --quiet --exec /usr/bin/spawn-fcgi --pidfile $PIDF -- -P $PIDF -p $PORT -C $PHP_FCGI_CHILDREN -u $USER -g $GROUP -f $PHP
- A hozzászóláshoz be kell jelentkezni
Nem voltal eleg figyelmes :)
van ott amit nem adok at kapcsoloval.
- A hozzászóláshoz be kell jelentkezni
Aham. De sztem a start-stop daemon átadja az aktuális környezeti változókat is.
Én inkább arra értettem, hogy nem kell minden bizbazt kiexportálni, csak ami télleg kell.
- A hozzászóláshoz be kell jelentkezni
Ez igaz.
- A hozzászóláshoz be kell jelentkezni
wikiben a helye :).
--
1 leszel vagy 0 élő vagy hulla!
- A hozzászóláshoz be kell jelentkezni
ez magyarul van? (koltoi kerdes)
Elbandi
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Nem. Magyarul itt van a blogomban.
A lighty wikibe megsem rakhattam bele magyarul, akarhogy is szeretem ezt a nyelvet :)
- A hozzászóláshoz be kell jelentkezni