LightTPD, FastCGI, Rails, et accessoirement cache APC

Publié le 18 janvier 2008 par Olivier Duval

changement de serveur Web : Mongrel vers LightTPD

Peu convaincu à force par Mongrel (serveur Web pour rails), en raison de l’excès de mémoire consommée (leak ?) voire du CPU par moment, le blog a été transféré vers LightTPD + FastCGI + Rails (Typo) afin de tenter de diminuer la consommation des ressources (primordial sur un serveur avec 377 Mo !).

La configuration /etc/lighttpd/lighttpd.conf, extrait de la partie spécifique pour Rails (Typo) :

server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_fastcgi"
)
$HTTP["host"] == "192.168.1.150" {
server.document-root = "/var/www/typo/public"
server.error-handler-404 = "/dispatch.fcgi"
server.indexfiles = ("dispatch.fcgi")
accesslog.filename = "/var/log/lighttpd/blog.access.log"
fastcgi.server = (".fcgi" =>
("localhost" =>
("socket" => "/var/www/typo/tmp/typo.socket",
"min-procs" => 1,
"max-procs" => 2,
"bin-path" => "/var/www/typo/public/dispatch.fcgi",
"bin-environment" => ("RAILS_ENV" => "production")
)))
}

Le reste n’ayant pas été changé de la configuration par défaut. L’IP 192.168.1.150 a été mise au lieu du nom du site (blog.olivier-duval.info), car il existe un frontal Apache (voir l’architecture du zorky lan) pour le reverse proxy (qui redirige vers le blog, les photos, ...selon le nom du site demandé), et celui-ci passe uniquement l’IP au serveur hébergé derrière.

cache APC

En plus de Google Analytics, le blog est marqué par Phpmyvisites qui se trouve sur un autre serveur virtuel, dédié au PHP. Sur ce dernier, un cache APC a été installé, cache qui permet d’accélérer les pages PHP, tout gain, même minime, reste appréciable. Un tutoriel pour l’installation (et compilation) d’APC.

quid LightTPD

L’efficacité maximum de LightTPD est obtenue sur les fichiers statiques : 17 000 req/s contre 7 000 req/s pour Apache 2, chiffres obtenus avec ab (ab -k -n 50 http://monsite/page.htm).

Egalement LightTPD s’avère efficace pour des applications Web PHP (en mode php-cgi) ou Perl, pour l’avoir mis en place et testé.

A voir à termes si ce changement de serveur Web sera profitable.