| Réglage des processus httpd et RAM par Octave (long) |
Salut,
Certains d'entre vous rament comme pas 2 pour bien configurer
apache. au finale ils crashent des machines car ça part en
couille.
Avant tout intervetion dans httpd.conf et sur les parametres
LISEZ le faq.txt qu'on vous a envoyé. ça va vous prendre 5 minutes
et eviter une panne d'1h ou plus.
2ème étape c'est de lire la doc d'apache.
3ème étape: si ça ne marche toujours pas, cet email devrait vous
aider.
Timeout 300
c'est le timeout de la connexion facile. au bout 300 sec
si le client ne fait rien serveur ferme la connexion
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
keep alive permet de faire plusieurs requetes avec une connexion
(requete <-> connexion)
sans keep alive
client ----> serveur j'ouvers la connexion (un slot)
client ----> serveur j'envoie la requete GET /index.html HTTP/1.0 etc etc
client <---- serveur j'envoie le resultat de la requete
client xxxxx serveur connexion fermée
client ----> serveur j'ouvers la connexion (un slot)
client ----> serveur j'envoie la requete GET /index.html HTTP/1.0 etc etc
client <---- serveur j'envoie le resultat de la requete
client xxxxx serveur connexion fermée
avec keep alive
client ----> serveur j'ouvers la connexion (un slot)
client ----> serveur j'envoie la requete GET /index.html HTTP/1.0 etc etc
client <---- serveur j'envoie le resultat de la requete
client ----> serveur j'envoie une 2ème requete dans le même slot
client <---- serveur j'envoie le resultat de la requete
client ----> serveur j'envoie une 2ème requete dans le même slot
client <---- serveur j'envoie le resultat de la requete
client ----> serveur j'envoie une 2ème requete dans le même slot
client <---- serveur j'envoie le resultat de la requete
client ----> serveur j'envoie une 2ème requete dans le même slot
client <---- serveur j'envoie le resultat de la requete
client ----> serveur j'envoie une 2ème requete dans le même slot
client <---- serveur j'envoie le resultat de la requete
client xxxxx serveur connexion fermée
dans le 1er cas il y a eu 2 connexions et 2 requetes
dans le 2ème cas il y a eu 1 connexions et plusieurs requetes.
si là vous avez bien compris on passe aux choses serieusses.
MinSpareServers 10
MaxSpareServers 20
StartServers 15
définition de nombre de slot predemarré et prêt à accepter les
connexions puis des requetes. on s'en fout un peu, mais il veut
mieux le mettre ram/4 environ. dans tous les cas apache gere
ça sans se soucier beaucoup de ça.
plus difficile est là
MaxClients 20
c'est le nombre de connexion (slot) possible en même temps.
MaxRequestsPerChild 2
c'est le nombre de requetes fait sur un slot après lesquels
un slot sera tué.
une petite explication:
rarement vous aurez sur votre machine (superplan par exemple)
plus que 30 connexions simu. donc ce n'est pas la peine de
mettre des chiffres genre 100.
si vous le faites qu'est-ce qui va se passer ? vous allez
swapper pour rien puisqu'apache creera des slots pour une
ou 2 connexions et ne pourra jamais les tuer rapidement
(à cause de MaxRequestsPerChild). vous allez vous retrouver
avec une ram explosé.
et si je laisse 30 ça va rammer ?
non, car apache gera et devra utiliser les slots libres
encore (!!!) au lieu d'en créer des slots pour rien.
oui c'est un peu bizarre mais c'est comme ça.
concernant MaxRequestsPerChild, ça permet de proteger
apache pourqu'il ne prenne pas trop de ram.
si MaxRequestsPerChild est très grand qu'est-ce qui se
passe ? vous allez swapper. exemple precis avec MaxRequestsPerChild 300000:
1ere connexion sur un slot, un fichier html (ça va)
2ème connexion sur ce même slot, un php qui va prendre 8Mo
à partir de ce moment là ce slot va prendre 8Mo pour TOUTES les
connexions suivantes même s'il en a pas besoins.
29999 connexion votre slot prend le MAX(ram de toutes les connexions)
30000 il est tué et libere toute la ram
si MaxRequestsPerChild est très très petit genre 1
ça voudra dire que à chaque connexion au slot juste après slot
est tué. vous allez bouffer un peu plus de CPU. si vous faites
moins de 20 req/sec on s'en fout car c'est pas assez pour voir
la difference.
rappelons qu'à chaque fois qu'un slot est tué, apache cree un
nouveau s'il est necessaire. il y a un algo qui prend en compte
les valeurs:
MinSpareServers 10
MaxSpareServers 20
StartServers 15
donc par exemple prennons le cas de ns308 qui a 128ram et moins
de 2req/sec et un gros script php: en mettant Maxclient à 20
on ne va jamais avoir le sentiment que ça rame puisqu'il y a
jamais pas plus que 6-7 connexions simu. en mettant MaxRequestsPerChild
à 2 apache tuera toutes les 2 connexions le slot et libera les
22% de ram qui sont pris par le script php. il faut que le maxclient
soit en plus relativement petit pour obliger apache à utiliser
les vieux slot justement pourqu'il les tue regulierement.
on verra donc l'utilisation de la ram suivante:
37Mo
45Mo
55Mo
..
88Mo
46Mo (ça y est apache a tué le slot qui a pris trop de ram)
56Mo
78Mo
34Mo (youpi !!)
...
etc etc
une autre solution est d'écrire le script php mieux ou par exemple
le mettre en suexec et l'executer à l'exterieur d'apache. et oui
les avantages de suexec sont énormes :)))
voilà voilà si vous êtes arrivés jusqu'au là et vous avez tout
pigé alors vous aurez des serveurs web superbe qui ne planteront
pas :) si un truc n'est pas claire n'hésitez pas poser des
questions, il vaut mieux poser une questions conne que faire une
connerie ;)))
si vous voyez des erreurs dans l'explications ou j'ai dit des
choses inexactes n'hésitez pas rectifier. je me suis basé sur
mon experiance et le feeling uniquement :)
Amicalemetn
Octave
Format imprimable - Il y a 0 commentaires pour cette faq (Ajouter - Lire les commentaires)
|
|
IMPORTANT :
At-infor.com ne peut être tenu responsable pour un quelconque dégât provoqué sur votre serveur.
Il ne tient qu'a vous de vérifier les informations contenues dans cette FAQ.
Cette FAQ contient des extraits de la ml sd@ml.ovh.net qui peuvent vous être utiles.
|
|