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.

10 réponses

1 2 3
Avatar
LJVD
le 28/02/04 23:22, Vincent Courcelle a écrit  :

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 :(


C'est surement sur les services de type forum que tu as le plus de charge.
Découper les services entre les deux serveurs et garder un répertoire commun
pour les cessions php, cela pourrait peut etre suffire ?

E tu as quoi comme dédié ? il suffit parfois d'éliminer le swap, d'ajouter
un peu de mémoire, pour gagner 30%
--
LJVD
http://www.ljvd.com

Avatar
Spyou
"Vincent Courcelle" a écrit dans le message de
news:404118ab$0$21663$
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...


C'est la bande passante qui sature ou la charge du processeur ?

Si c'est la bande passante, demande juste a ton hebergeur de l'augmenter, tu
n'aura plus de plateaux.

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 !


T'as la réplication dans Mysql (voir la doc). Reste a gerer la replication
des sessions PHP (un share NFS peut etre ?)

Avatar
Vincent Courcelle
non, c'est la charge processeur
je ne suis pas limité en bande passante (c'est au transfert, compté de
manière erroné par mon hébergeur (rho, je consommerais 1.6 Go exactement
tous les jours ? m'étonnerait lolll)) (je peux sans probleme télécharger à
10Mo/s avec wget...)
plus le processeur est occupé et moins les visiteurs "cliquent", donc ça
fait des "plateaux" de bande passante
j'ai cherché du côté de file mirroring, je sais que c'est ça qu'il me faut
mais je n'ai rien trouvé de satisfaisant de ce côté là (en fait c'est un
synchronisation de répertoires contenant des images... beaucoup beaucoup
d'images, dans les 85 000 en ce moment (x2 car il y a les images normales et
les images vignettes) et forcément ça augmente.......)
j'aurais voulu éviter de faire un dossier "partagé" entre les 2 serveurs
pour ne pas qu'il y ait qu'un seul disque qui travaille mais je me dis que
c'est peut être la meilleure solution vu le nombre de fichiers
qu'en pensez vous ?

(c'est un red hat 9, athlon 2000+ et je pense reprendre la même chose pour
le 3ème serveur)
pour la répartition de charge je pense gérer ça directement dans mon script
php, si pas de session dans l'url et ni dans les cookies alors on fait un
rand et on redirige 2/3 des requetes sur l'autre serveur www2 (2/3 car le
1er gère déjà les mails, etc...))

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.

"Spyou" a écrit dans le message de
news:4041a944$0$29932$

"Vincent Courcelle" a écrit dans le message de
news:404118ab$0$21663$
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...


C'est la bande passante qui sature ou la charge du processeur ?

Si c'est la bande passante, demande juste a ton hebergeur de l'augmenter,
tu

n'aura plus de plateaux.

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 !


T'as la réplication dans Mysql (voir la doc). Reste a gerer la replication
des sessions PHP (un share NFS peut etre ?)





Avatar
Vincent Courcelle
pas spécialement, c'est plutôt global je crois
il y a un nombre incalculable de thread httpd et je pense que c'est ça qui
augmente la charge via la consommation de mémoire (ils sont quasiment tous à
0.0%)
le serveur en question est un athlon xp 2000+ avec 768 de ram
mais mon hébergeur ne fait pas de customization des serveurs :

SERVER4YOU can offer you such economical service because we provide only
standardized server configurations. We offer no customization for server
hardware - but because our standard servers are priced so low, an upgrade to
a larger SERVER4YOU standard server will probably cost you far less than a
simple RAM upgrade from other providers. For instance, you can upgrade to a
more powerful standard server for as little as US$20.00 a month.

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.

"LJVD" a écrit dans le
message de
news:BC6760F4.42F0F%

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 :(


C'est surement sur les services de type forum que tu as le plus de charge.
Découper les services entre les deux serveurs et garder un répertoire
commun

pour les cessions php, cela pourrait peut etre suffire ?

E tu as quoi comme dédié ? il suffit parfois d'éliminer le swap, d'ajouter
un peu de mémoire, pour gagner 30%



Avatar
Manuel Guesdon
Bonjour,

On Sat, 28 Feb 2004 23:22:44 +0100, Vincent Courcelle wrote:
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 !


Quelques pistes:
o regarder ce qui est le plus consommateur sur tes pages
o Cacher les pages & ou les requetes
o prendre un bi-pro
o au lieu de load balacing par requete, faire du load balaning par
instance (i.e. faire 'coller' quaque session sur un serveur)+nfs
o changer de techno (utiliser du compilé au lieu de script php).

Manuel

Avatar
Vincent Courcelle
un bipro me couterait plus cher et serait moins performant et moins fiable
que de prendre un deuxième serveur, donc...
ce n'est pas la technologie utilisée qui est en cause mais bien le nombre de
hits (et donc le nombre de process apache 2)
je pensais tout a fait faire du "par instance" en redirigeant certains des
visiteurs sur le www2
le probleme de nfs c'est que c'est des dossiers partagés je crois et donc
les accès disque ne sont pas vraiment divisés par 2
mais c'est vers cette techno que je pense me tourner à cause du nombre de
fichiers à synchroniser (en fait, c'est que des ajout/suppression, pas de
modifications, peut être existe-y-il une techno très rapide et très adaptée
à celà ?)
merci 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.

"Manuel Guesdon" a écrit dans le message de
news:
Quelques pistes:
o regarder ce qui est le plus consommateur sur tes pages
o Cacher les pages & ou les requetes
o prendre un bi-pro
o au lieu de load balacing par requete, faire du load balaning par
instance (i.e. faire 'coller' quaque session sur un serveur)+nfs
o changer de techno (utiliser du compilé au lieu de script php).

Manuel


Avatar
Manuel Guesdon
On Sun, 29 Feb 2004 14:40:36 +0100, Vincent Courcelle wrote:

un bipro me couterait plus cher et serait moins performant et moins fiable
que de prendre un deuxième serveur, donc...


Oui, mais ca evite le probleme de la synchro :-)
Evidement, dur de se rendre compte sans tester.


ce n'est pas la technologie utilisée qui est en cause mais bien le nombre de
hits (et donc le nombre de process apache 2)


Ca monte à combien de process a peut pret en charge ?

je pensais tout a fait faire du "par instance" en redirigeant certains des
visiteurs sur le www2
le probleme de nfs c'est que c'est des dossiers partagés je crois et donc
les accès disque ne sont pas vraiment divisés par 2
mais c'est vers cette techno que je pense me tourner à cause du nombre de
fichiers à synchroniser (en fait, c'est que des ajout/suppression, pas de
modifications, peut être existe-y-il une techno très rapide et très adaptée
à celà ?)


Ca depend de plusieurs choses: est-ce que toutes les requetes ont besoin
de mettre àjour les fichier ou est-ce reservé à des admins seulement ?

La solution de cache marche pas mal aussi si les pages generent pas mal de
requetes ou de grosses requetes.

Manuel

Avatar
Eric Demeester
dans (in) fr.reseaux.internet.hebergement, "Vincent Courcelle"
ecrivait (wrote) :

Bonjour Vincent,

un bipro me couterait plus cher et serait moins performant et moins fiable
que de prendre un deuxième serveur, donc...


Ca se discute, tout dépend du matériel, mais clairement, vis à vis de ce
que te propose ton hébergeur, je pense que ton raisonnement est bon.

ce n'est pas la technologie utilisée qui est en cause mais bien le nombre de
hits (et donc le nombre de process apache 2)
je pensais tout a fait faire du "par instance" en redirigeant certains des
visiteurs sur le www2


Si ce sont les process Apache qui saturent la mémoire et le CPU, tu peux
imaginer une architecture avec load balancing hardware (Alteon par
exemple) sur deux frontaux http en miroir et une troisième machine
hébergeant la base MySQL.

le probleme de nfs c'est que c'est des dossiers partagés je crois et donc
les accès disque ne sont pas vraiment divisés par 2


Tu peux je pense (mais je peux me tromper, je ne suis pas spécialiste)
gagner beaucoup en utilisant un vrai load balancing en amont des
machines. Si c'est la machine A qui le fait de façon logicielle vers la
machine B, le gain en performances sera moindre que si un équipement en
amont interroge les deux serveurs et dirige la requête vers celui qui
répond le plus rapidement.

mais c'est vers cette techno que je pense me tourner à cause du nombre de
fichiers à synchroniser (en fait, c'est que des ajout/suppression, pas de
modifications, peut être existe-y-il une techno très rapide et très adaptée
à celà ?)


Si j'ai bien suivi, quelque chose m'échappe dans ton raisonnement dans
la mesure ou la base MySQL est hébergée sur un troisième serveur.

Dans ce cas, ce serveur va recevoir plus de requêtes puisqu'il y aura
deux machines qui l'interrogeront au lieu d'une, mais d'une part ça se
fera en local, donc à 100 mbps, voire 1 gbps en fonction des capacités
du switch et des cartes réseau ; d'autre part le goulot d'étranglement
n'est pas au niveau de la base de données.

A moins que quand tu parles de synchroniser des fichiers, il ne s'agisse
d'autre chose que du contenu de la base ?

Si tel est le cas, faire du mirroring RAID1 sur une grosse machine
(bi-pro, disques SCSI) plutôt que du load balancing pourrait être une
solution.

Je continue à lire cette passionnante discussion avec grand intéret :)

--
Eric Demeester - http://www.galacsys.net

Avatar
Vincent Courcelle
en ce moment (charge 29.63) : 257 process httpd (sur un total de 314
process)
il n'y a pas un envoi de fichier à chaque page (encore heureux) mais il me
faut une synchronisation rapide car si un membre envoi un fichier et que
qu'une partie des autres membres tombent sur une 404 quand ils veulent voir
une page qui affiche cette image (puisque le serveur mysql est commun au
deux serveurs "PHP", c'est un 3ème serveur)
et tous les membres peuvent envoyer des fichiers (c'est que des images)

je ne comprend pas ce que tu entends par solution cache ?
d'après ce que j'ai compris nfs utiliserait un cache pour les fichiers ?
dans ce cas là ça serait excellent car ça résoudrait mon probleme d'accès
disques en grande partie...

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:
Ca monte à combien de process a peut pret en charge ?
Ca depend de plusieurs choses: est-ce que toutes les requetes ont besoin
de mettre àjour les fichier ou est-ce reservé à des admins seulement ?

La solution de cache marche pas mal aussi si les pages generent pas mal de
requetes ou de grosses requetes.


Avatar
Vincent Courcelle
"Eric Demeester" <eric+ a écrit dans le message de
news:

Si ce sont les process Apache qui saturent la mémoire et le CPU, tu peux
imaginer une architecture avec load balancing hardware (Alteon par
exemple) sur deux frontaux http en miroir et une troisième machine
hébergeant la base MySQL.


euh... $$$$$$$ !!!!!!!!
et pi je peux pas toucher au hardware chez mon hébergeur actuel


Tu peux je pense (mais je peux me tromper, je ne suis pas spécialiste)
gagner beaucoup en utilisant un vrai load balancing en amont des
machines. Si c'est la machine A qui le fait de façon logicielle vers la
machine B, le gain en performances sera moindre que si un équipement en
amont interroge les deux serveurs et dirige la requête vers celui qui
répond le plus rapidement.


oui mais ça me fait un serveur de plus à payer... je pense que le gain
serait suffisant sans avoir à louer pour le moment une 4ème machine
je pensais faire avec un logiciel au départ mais toutes les solutions que
j'ai pu trouver sont avec un serveur dédié au load balancing comme ce que
vous proposez


Si j'ai bien suivi, quelque chose m'échappe dans ton raisonnement dans
la mesure ou la base MySQL est hébergée sur un troisième serveur.

Dans ce cas, ce serveur va recevoir plus de requêtes puisqu'il y aura
deux machines qui l'interrogeront au lieu d'une, mais d'une part ça se
fera en local, donc à 100 mbps, voire 1 gbps en fonction des capacités
du switch et des cartes réseau ; d'autre part le goulot d'étranglement
n'est pas au niveau de la base de données.


la charge maximale de ce serveur mysql est actuellement d'environ 2.5 ! il
peut largement tenir un peu plus de requetes je crois :)


A moins que quand tu parles de synchroniser des fichiers, il ne s'agisse
d'autre chose que du contenu de la base ?


tout à fait ! la base n'est pas du tout à synchroniser mais ce sont
uniquement des dossiers contenant des uploads que les membres font (pour
poster des images)
et je ne suis pas fou au point de stocker ce genre de trucs dans une base
mysql lolll


Si tel est le cas, faire du mirroring RAID1 sur une grosse machine
(bi-pro, disques SCSI) plutôt que du load balancing pourrait être une
solution.


je suis tombé sur un logiciel pour faire du raid 1 externe (avec un disque
réseau), c'est à peu près ce que je veux faire mais les compiles de noyaux
et consors ça me fait peur :-/ et pi je suis pas du tout un "linux expert"
alors les mount etc... ça me donne des frissons

Je continue à lire cette passionnante discussion avec grand intéret :)
de même :)


1 2 3