Lighttpd + Apache

46 réponses
AuteurMessage

are |
Membre

Photo de are

Inscrit le : 09/03/2009

# Le 27/03/2009 à 13:50

Aloa à tous,

Depuis aujourd'hui sur deux de nos sites nous utilisons le couple Apache (pour le contenu dynamique) + Lighttpd (pour le contenu fixe -swf,jpg,gif,png,pdf-).

Les sites en question : hugolescargot.com et jeux-gratuits.com

Certains d'entre vous utilisent-ils déjà cette technique? Avez vous éventuellement des poc qui démontre l'efficacité de ce système?

Merci à tous..

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 27/03/2009 à 14:01

Bonjour,

j'utilise ce genre de technique chez la plupart de mes clients (si ce n'est que j'utilise nginx et non lighty, mais ça revient au même) ; j'en suis très satisfait.

Je ne citerai pas le nom du site, mais chez un client avec ce type d'infra on a dépassé les 500Mbps par serveur (et sans video ou fichier son). Bref, ça monte extrêmement bien en charge.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 27/03/2009 à 15:15

Bah pas forcément non plus... y a peut être moyen d'atteindre le même genre de débit avec le module event d'Apache2 et un PHP en FastCGI. Ou simplement en séparant le contenu statique et dynamique sur des sous domaines différents pour contourner les problèmes liés au keepalive ?
Ca dépend aussi des machines : sur des vieux Xeon avec hyperthreading, j'avais mesuré une différence de perfs du simple au double entre Apache2-mpm-event et NginX sur des fichiers statiques, alors que la différence est nettement moindre sur certains autres serveurs.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 27/03/2009 à 15:54

dob a dit :
Oui oui je voulais dire avec un Apache sans PHP, optimisé autant que lighttpd/nginx.

Dans ce cas la, la différence doit pas être monstrueuse je pense

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 27/03/2009 à 16:10

Justement Telaxo, j'en suis pas certain. Comme je disais sur certaines machines j'ai vu des différences du simple au douple.

Les softs tels que NginX ou Varnish sont vraiment optimisés pour les architectures modernes : http://varnish.projects.linpro.no/wiki/ArchitectNo...Ouvrir dans une nouvelle fenetre

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

are | Aurélien
Membre

Photo de are

Inscrit le : 09/03/2009

# Le 27/03/2009 à 16:46

Dans tous les cas chez nous, c'est assez bluffant, la charge serveur est devenu assez faible.

Par contre, on avait fait deux essais, le premier sous le schéma suivant:

client -> apache -> si contenu fixe -> lighttpd
-> sinon on continue

et le second schéma qui est le suivant:

client -> lighttpd -> si contenu fixe -> on continue
-> sinon on passe a apache

Le premier utiliser une rewrite rules apache pour gérer tout ça, bref, on avait pas eu un très bon retour.. le second en revanche fonctionne du feu de dieu (ça fonctionne via mod_proxy).

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 27/03/2009 à 17:13

euh oui forcément si tu mets le plus "lent" en front, ça n'a aucun intérêt, au contraire.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

are | Aurélien
Membre

Photo de are

Inscrit le : 09/03/2009

# Le 27/03/2009 à 19:23

c'est pourtant le cas de la majorité des tutoriaux qui explique le bousin sur le net..

en soit, rien de dramatique.. ;-)

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 27/03/2009 à 23:09

Je viens de mettre en place cette solution. Je ne connaissais pas le principe, ça me semble sympa
C'est en place avec Nginx sur un serveur clickintext.

Le seul problème que j'ai rencontré c'est pour mod_geoip. Impossible de le configurer pour qu'il utilise le HTTP_X_FORWARDED_FOR au lieu du REMOTE_ADDR. La directive n'existe pas dans ma version de mod_geoip apparemment, comme bcp de personnes sur le web. Du coup j'ai viré le module d'apache et l'ai mis au niveau de PHP avec un fichier en prepend qui rempli les variables GEOIP que j'utilise. Pas convaincu que ceci soit très bénéfique, mais on va voir avec les pour et contre ce que ça donne au final !

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 27/03/2009 à 23:45

Bool, a tu trouvé une liste de directives importantes pour la conf de nginx ?

J'ai identifié à partir de la doc :
- worker_processes : j'ai mis le nombre de cpu
- worker_cpu_affinity : j'ai réparti un process par cpu
- worker_rlimit_nofile : j'ai 8192 comme dans leur exemple, mais je ne vois pas trop à quoi ça correspond
- worker_connections : j'ai mis 10240. Car j'avais des erreur de "trop de fichiers ouvert" ou un truc du genre

Après j'ai mis :
- proxy_buffer_size 128k;
- proxy_buffers 4 256k;
- proxy_busy_buffers_size 256k;
- proxy_temp_file_write_size 256k;

Sans trop de conviction

En tout cas, ça tourne pour l'instant, je vais voir ce que ça donne sur 24h. Si tu as identifié des points importants à configurer je suis preneur

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 28/03/2009 à 00:27

Moi je suis preneur du process global pour mettre ça en place

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

Akarys | Thierry
Membre

Photo de Akarys

Inscrit le : 19/01/2008

# Le 28/03/2009 à 05:38

client -> lighttpd -> si contenu fixe -> on continue
-> sinon on passe a apache

Bonjour,
C'est quand même plutôt tordu comme solution, non ?

Ca me semble beaucoup plus propre/simple/efficace
d'avoir les www.domain.tld sur un serveur en Apache
et les img.domain.tld ou static.domain.tld sur un autre en Lighttpd

Certes il faut 2 serveurs, mais au prix des Kimsufi aujourd'hui...

Akarys

are | Aurélien
Membre

Photo de are

Inscrit le : 09/03/2009

# Le 28/03/2009 à 07:46

Akarys a dit :
client -> lighttpd -> si contenu fixe -> on continue
-> sinon on passe a apache

Bonjour,
C'est quand même plutôt tordu comme solution, non ?

Ca me semble beaucoup plus propre/simple/efficace
d'avoir les www.domain.tld sur un serveur en Apache
et les img.domain.tld ou static.domain.tld sur un autre en Lighttpd

Certes il faut 2 serveurs, mais au prix des Kimsufi aujourd'hui...

Akarys


Pas du tout,

En fait, tu configure lighthttpd et apache avec comme DocumentRoot le répertoire du site, tu met LightHttpd sur le port 80 et Apache sur le port 8080.

LightHttpd reçoit les requêtes, vois celle qu'il est autorisé à traiter, et lance les autres en reverse proxy (de manière totalement transparente) à Apache (sur 127.0.0.1:8080).

Ton idée est également bonne, mais du coup l'entretient du site en devient plus complexe, je m'explique: il faut mettre le contenu fixe à tel endroit, le contenu dynamique à tel endroit.. enfin c'est un peu chiant

Akarys | Thierry
Membre

Photo de Akarys

Inscrit le : 19/01/2008

# Le 28/03/2009 à 08:30

> tu mets LightHttpd sur le port 80 et Apache sur le port 8080.

Oui, oui. Je connais cette manip.
Ca marche mais ça permet surtout à ralentir (même si très peu) toutes les pages dynamiques...

> il faut mettre le contenu fixe à tel endroit, le contenu dynamique à tel endroit..

Parce que toi tu mélanges ces différents type de contenu ?

Et pour ceux qui ne veulent pas s'embêter à trier : Màj 1 serveur, puis rsync et c'est réglé.

M'enfin, ça doit quand même être utile à certains cas (vidéo ou ceux qui ne veulent pas Ftp pour le téléchargement) vu le nombre de Tutos de cette config sur le net...

Bon WE
Akarys

are | Aurélien
Membre

Photo de are

Inscrit le : 09/03/2009

# Le 28/03/2009 à 08:57

En tous cas, hier soir avec un peu plus de 3000 connectés sur Jeux-Gratuits.com le serveur n'as pas dépassé 1 de load average, alors que d'habitude à nombre de connectés équivalent il est plus entre 2 et 3.



Bon week-end à tous et à toutes (si toutes il y a..)!

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 28/03/2009 à 11:54

Bon résultat pour une régie comme clickintext : ça ne convient pas je m'en doutais un peu mais ça valait la peine d'essayer.

Comme c'est beaucoup de traitement de script, le résultat c'est :
- Deux fois moins de requetes vers apache (vu qu'il y a quand meme quelques images). Mais pour un "site" ça doit être beaucoup plus bénéfique car il y a proportionnellement plus d'image que de "page"
- Load : (= ) aucun bénéfice, ou extrémement faible
- Utilisation de la RAM : (-) Deux fois plus utilisée avec Nginx + apache au lieu d'apache seul, donc la loose pour ça
- Bande passante : (+) 30% de bande passante utilisée en moins. Car Nginx est du coup adapté pour du static et les cache
- nf_conntarck : (-) 30% de plus
Je vais voir jusqu'où la RAM chute dans la journée, mais je pense que je vais revenir comme avant.

(Comparatif fait sur deux serveurs identiques avec une modification au niveau du load balancer pour leur répartir de manière identique la charge, sans prendre en compte leur charge.)

(Message édité le 28-03-2009 à 12h03 par Rano)

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 28/03/2009 à 12:14

Pour clickintext, la plupart des hits finissent probablement vers Apache, donc l'intérêt est limité oui... tu n'as que le gain lié au keepalive, si toutefois il est intéressant dans votre cas (et que tu n'utilisais pas déjà mod-event).

Pour le soucis des IP, il y a le module rpaf d'Apache2 qui règle ça.

Quant aux divers paramètres, ça dépend aussi du fait que la machine soit dédiée à NginX ou non. Mettre autant de "worker" que de nombre de CPU alors que le gros du boulot va être PHP, ne me semble pas idéal comme choix. Deux/trois "worker process", c'est déjà pas mal je pense (après je sais pas combien t'as de CPU sur tes machines...).

Les erreurs de "trop de fichiers ouvert", c'est justement ce que le "worker_rlimit_nofile" est sensé régler... mais je n'ai jamais vu cette option perso, tu l'as trouvée où ? je la vois même pas dans le wiki. J'utilise "ulimit" pour faire ça. (Edit : ah si je suis miro, http://wiki.nginx.org/NginxHttpMainModule#worker_r...Ouvrir dans une nouvelle fenetre )

Pour ce qui est de ton utilisation de la RAM, habituellement c'est vraiment le contraire. Surtout si tu utilisais un Apache2 "prefork", la quantité de mémoire est très très inférieure. Chez moi NginX n'atteint pas les 100Mo, et Apache se retrouve limité aux process PHP.

EDIT : pour nf_conntrack, de toutes façons tout le monde conseille de le désactiver à haut régime. Ou au moins de prendre le temps de le configurer de manière adaptée.

(Message édité le 28-03-2009 à 12h20 par Bool)

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 28/03/2009 à 13:52

Ah, ca se désactive nf_conntrack ? Comment ? Ca m'a toujours emmerdé ce truc

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 28/03/2009 à 13:54

Je vais essayer d'affiner les réglages de nginx...

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 28/03/2009 à 14:40

Pour le conntrack, normalement il est chargé que si on l'utilise (c'est un module du kernel), mais comme OVH compile "tout" en dur... La solution ? Dégager ce pt1 de kernel OVH.

Si tu utilises du Debian 64bits, cadeau : http://apt.daevel.fr:9999/daevel/linux-image-2.6.2...Ouvrir dans une nouvelle fenetre
De ce que j'ai pu tester ce kernel fonctionne sur l'ensemble des serveurs OVH à base de core2duo / core2quad ou xeon basés sur ces mêmes processeurs (typiquement ceux qui n'ont pas l'hyperthreading).

Et comme le fichier config est inclus dans le paquet (merci Debian), tu peux le recompiler à loisir.
Note en passant : il s'agit d'un kernel vanilla, donc sans GrSec.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 1:44:04 | Généré en 16.46ms | Contacts | Mentions légales |