OVH Cloud OVH Cloud

loadbalancing

27 réponses
Avatar
Vincent Courcelle
Salut
j'ai un site en php qui reçoit un bon paquet de pages vues par jour (entre
250 000 et 300 000... je crois qu'encore une fois c'est le serveur qui
limite ce nombre, je me retrouve encore une fois avec des "plateaux" de
"saturation" de la bande passante... comme quand il ne faisait que 60 000
pages vues et que je l'ai changé de serveur et qu'au jour au lendemain ce
chiffre à plus que doublé)
ce qui fait qu'un serveur ne suffit plus
je pensais donc prendre un autre serveur et faire du load balancing via DNS
entre les 2
le probleme c'est qu'il est tout géré par php, donc toutes les répercutions,
notamment au niveau des fichiers (la base mysql est sur un 3 ème serveur)
doivent se répercuter immédiatement (synchronisation permanente)
j'ai vu des solutions à base de dossier partagé entre les 2 serveurs et une
autre à base de synchronisation ponctuelle, mais rien en flux continu :(
merci par avance de votre aide !

Vincent Courcelle,
http://www.france-jeunes.net
et http://www.tubededentifrice.com (nouvelle version enrichie en silicium)

Prière de joindre le message d'origine à votre réponse.

7 réponses

1 2 3
Avatar
Vincent Courcelle
"Manuel Guesdon" a écrit dans le message de
news:
C'est pour ca que je dis qu'il faut voir ce qui 'charge' la machine.
On a un bi-xeon qui a:
ps wax | grep http | wc -l
257
et une charge de 0.78
Il faudrait aussi regarder le parametrage d'apache au niveau des
StartServers
MinSpareServers
MaxSpareServers


StartServers 20
MinSpareServers 5
MaxSpareServers 200
MaxClients 1500
MaxRequestsPerChild 1000

c'est bon ?


Si apache n'arrete pas de creer/detruire des serveurs, ca va pas mal jouer
sur les perfs.
Bref, regarder: la mémoire, la charge due au swap, les warnings eventuels
d'apaches dans le error log,...

je ne comprend pas ce que tu entends par solution cache ?


Il y a des solutions pour cacher le resultat de pages php. Si cela est
possible sur ton site, tu peux du coup peut etre eviter une grosse partie
des reques mysql et des traitements php. Je l'ai fait sur un site tres
frequenté et ca donne une seconde vie au serveur :-)


je cache déjà tout ce qu'il est possible de cacher (je peux pas tout cacher
malheureusement à cause du dynamisme des pages)


Avatar
Manuel Guesdon
On Mon, 01 Mar 2004 18:22:09 +0100, Vincent Courcelle wrote:


"Manuel Guesdon" a écrit dans le message de
news:
C'est pour ca que je dis qu'il faut voir ce qui 'charge' la machine.
On a un bi-xeon qui a:
ps wax | grep http | wc -l
257
et une charge de 0.78
Il faudrait aussi regarder le parametrage d'apache au niveau des
StartServers
MinSpareServers
MaxSpareServers


StartServers 20
MinSpareServers 5
MaxSpareServers 200
MaxClients 1500
MaxRequestsPerChild 1000

c'est bon ?


IMHO, Tu peux augmenter le a plus de 25000, ca evitera de recrée des
childs trop souvent. Vus la charge, tu peux deja monter le StartServers à
50 et le MinSpare à 25 pour qu'il ait de l'avance.
Regarde la mémoire par rapport au nombre de httpd et à leur taille, si ca
se trouve ton serveur swappe pas mal (regarde par exemple la ligne kswapd
dans top) et il suffit peut etre d'un peu plus de ram.

Manuel


Avatar
Vincent Courcelle
StartServers 20 -> 50
MinSpareServers 5 -> 25
MaxSpareServers 200 -> 200
MaxClients 1500 -> 512 (largement suffisant d'après ce qu'on m'a
dit)


MaxRequestsPerChild 1000 -> 25000



et de plus : KeepAliveTimeOut 5 (au lieu de 15)

Vincent Courcelle,
http://www.france-jeunes.net
et http://www.tubededentifrice.com (nouvelle version enrichie en silicium)

Prière de joindre le message d'origine à votre réponse.

"Manuel Guesdon" a écrit dans le message de
news:


IMHO, Tu peux augmenter le a plus de 25000, ca evitera de recrée des
childs trop souvent. Vus la charge, tu peux deja monter le StartServers à
50 et le MinSpare à 25 pour qu'il ait de l'avance.
Regarde la mémoire par rapport au nombre de httpd et à leur taille, si ca
se trouve ton serveur swappe pas mal (regarde par exemple la ligne kswapd
dans top) et il suffit peut etre d'un peu plus de ram.

Manuel



Avatar
StartServers 20
MinSpareServers 5
MaxSpareServers 200
MaxClients 1500
MaxRequestsPerChild 1000

c'est bon ?




...

si j'ai bien lu le probleme (rapidement il faut le dire) ce que tu proposes
c'est un faux raisonnement qu'on voit souvent chez nos clients. la correction
n'est pas logique a premiere lecture mais avec les explications ca passe mieux.
son probleme est la RAM utilisee et donc comme il swap tout le temps
et donc ca machine rame et donc la charge est importante. a sa place
j'aurais mis MaxClients 200 MaxRequestsPerChild 30
1ere consequence apache va _devoir_ gerer les slots d'apache _mieux_
c'est a dire qu'il va avoir une possibilitee de 200 slots a utiliser au
lieu de 1500. il va donc devoir utiliser les slots qui se sont libres au
lieu d'en creer les nouveaux jusqu'a la limite de 1500. ca va donc prendre
carrement moins de RAM. a la grande surprise il n'y a pas de ralentissement !
d'ailleurs on voit qu'il n'a que 257 slots utilises et c'est seulement au
bout d'un certains temps que ca commence a ramer. voila les explications pq.
2eme consequence si les process sont tues tous les 30 requetes ca evite
l'utilisation de la RAM en _fuite_, car il faut savoir que le slot prend
toujours la RAM maximal d'une requete puis ne le libere pas jusqu'a sa
mort. et donc si a la 100eme requete, on avait besoins de 50Mo, le slot
va prendre jusqu'au 1000eme requete les 50Mo meme s'il en a pas
besoins, puis il mourra en liberant tout.

octave

Manuel



Avatar
Thomas Pedoussaut
Vincent Courcelle wrote:
"Manuel Guesdon" a écrit dans le message de
news:

C'est pour ca que je dis qu'il faut voir ce qui 'charge' la machine.
On a un bi-xeon qui a:
ps wax | grep http | wc -l
257
et une charge de 0.78
Il faudrait aussi regarder le parametrage d'apache au niveau des
StartServers
MinSpareServers
MaxSpareServers



StartServers 20
Vu ta charge commence a 50 (on s'en fout un peu du demarrage de toute facon)


MinSpareServers 5
Oula, je met generalement plus que ca: 20


MaxSpareServers 200
La aussi c'est beaucoup, ca veut dire que tant que tu chute pas

violement, il garde des process ouverts. Je conseillerai 50

MaxClients 1500
C'est pas possible de mettre plus de 256 sans recompiler apache !!!!!


MaxRequestsPerChild 1000
Oui, correct, c'est juste pour eviter les processus fous.



Plus je pense a ton probleme, et plus je suis convaincu qu'il te faut
une recompile d'apache pour etendre le maxchild a plus de 256.

--
Thomas Pedoussaut
Dublin IRLANDE
http://irlande.staffeurs.org/


Avatar
Vincent Courcelle
a écrit dans le message de
news:4043a754$0$29928$

si j'ai bien lu le probleme (rapidement il faut le dire) ce que tu
proposes

c'est un faux raisonnement qu'on voit souvent chez nos clients. la
correction

n'est pas logique a premiere lecture mais avec les explications ca passe
mieux.

son probleme est la RAM utilisee et donc comme il swap tout le temps
et donc ca machine rame et donc la charge est importante. a sa place
j'aurais mis MaxClients 200 MaxRequestsPerChild 30
1ere consequence apache va _devoir_ gerer les slots d'apache _mieux_
c'est a dire qu'il va avoir une possibilitee de 200 slots a utiliser au
lieu de 1500. il va donc devoir utiliser les slots qui se sont libres au


non non
en fait il a toujours été limité à 256 slots par une option de compilation
donc ce que j'ai touché de ce côté là n'a eu aucune influence
en fait il y avait plein de requetes en keepalive, j'ai donc baissé ce
paramètre... et effectivement, c'est plus rapide !
je n'ai plus ce temps de latence avant le chargement de la page que j'avais
avant aux heures de pointe

lieu d'en creer les nouveaux jusqu'a la limite de 1500. ca va donc prendre
carrement moins de RAM. a la grande surprise il n'y a pas de
ralentissement !

d'ailleurs on voit qu'il n'a que 257 slots utilises et c'est seulement au
bout d'un certains temps que ca commence a ramer. voila les explications
pq.

2eme consequence si les process sont tues tous les 30 requetes ca evite
l'utilisation de la RAM en _fuite_, car il faut savoir que le slot prend
toujours la RAM maximal d'une requete puis ne le libere pas jusqu'a sa
mort. et donc si a la 100eme requete, on avait besoins de 50Mo, le slot
va prendre jusqu'au 1000eme requete les 50Mo meme s'il en a pas
besoins, puis il mourra en liberant tout.


merci de ces précisions !

Avatar
Vincent Courcelle
tout celà ne tiendra malheureusement pas indéfiniment (et j'espère bien que
chaque serveur aura une charge largement inférieure à celà !) et ça me
ramène au probleme initial : la réplication/le partage de dossier entre
plusieurs serveurs, c'est quoi qu'il faut faire pour que ce soit le plus
efficace avec un nombre de fichiers aussi grand (dans les 200 000 au total)
:-/

Vincent Courcelle,
http://www.france-jeunes.net
et http://www.tubededentifrice.com (nouvelle version enrichie en silicium)

Prière de joindre le message d'origine à votre réponse.

"Thomas Pedoussaut" a écrit dans le message de
news:40445bec$0$28119$
Vincent Courcelle wrote:
"Manuel Guesdon" a écrit dans le message de
news:

C'est pour ca que je dis qu'il faut voir ce qui 'charge' la machine.
On a un bi-xeon qui a:
ps wax | grep http | wc -l
257
et une charge de 0.78
Il faudrait aussi regarder le parametrage d'apache au niveau des
StartServers
MinSpareServers
MaxSpareServers



StartServers 20
Vu ta charge commence a 50 (on s'en fout un peu du demarrage de toute

facon)


MinSpareServers 5
Oula, je met generalement plus que ca: 20


MaxSpareServers 200
La aussi c'est beaucoup, ca veut dire que tant que tu chute pas

violement, il garde des process ouverts. Je conseillerai 50

MaxClients 1500
C'est pas possible de mettre plus de 256 sans recompiler apache !!!!!


MaxRequestsPerChild 1000
Oui, correct, c'est juste pour eviter les processus fous.



Plus je pense a ton probleme, et plus je suis convaincu qu'il te faut
une recompile d'apache pour etendre le maxchild a plus de 256.




1 2 3