Limiter le nombre de personnes connectées au site

julesdsl

WRInaute discret
Bonjour à tous et à toutes,

Tout d'abord bonne année ! (puisque ce n'était pas encore fait)...

Nous administrons des serveurs hébergeant un site de e-commerce (sous os-commerce)...

Nous avons déjà fait beaucoup d'optimisation :
- config d'apache custom
- mysql et apache sur 2 serveurs séparés
- images servies par lighttpd sur serveur mysql
- système de cache

Malgrès tout à chaque période de soldes les serveurs sont sur les genoux... et 100% des visiteurs sont pénalisés (ainsi que le proprio de la boutique).

J'ai deux questions par rapport à cette situation délicate :
1 - Voyez-vous une autre optimisation possible ?
2 - Connaissez-vous un moyen de limiter le nombre de personnes connectées au site ?
J'ai déjà vu cette solution mise en place sur certains sites, quand on arrive sur le site s'il y a déjà trop de monde connecté un message demande de revenir plus tard... ce n'est pas très élégant mais si cela peut permettre aux personnes connectées de commander correctement... plutôt que de pénaliser 100% des visiteurs...


Merci d'avance pour votre aide... comme vous l'avez deviné nous sommes au début des soldes et la situation est un peu tendue.

Cordialement.
Julian
 

UsagiYojimbo

WRInaute accro
Rajouter des index dans les tables. On avait ce genre de soucis sur un OSCOMMERCE dans ma boîte, et ça a résolu pas mal de choses.
 

Serious

WRInaute passionné
Determiner le goulot d'etranglement.
Louer des serveurs supplementaires pendant la periode des soldes.
 

julesdsl

WRInaute discret
UsagiYojimbo a dit:
Rajouter des index dans les tables. On avait ce genre de soucis sur un OSCOMMERCE dans ma boîte, et ça a résolu pas mal de choses.

Salut,

Merci pour la suggestion, on a déjà fait ça mais j'ai oublié de le mettre dans ma liste...

Donc pas grand chose à gagner de ce côté.
 

julesdsl

WRInaute discret
Ron56 a dit:
Maxclients de combien pour quel serveur ?

Pour préciser un peu :
- Les machines sont 2 serveurs Core 2 duo avec 2Go de Ram
- Le site reçoit environs 4000 visiteurs uniques / jour en temps normal, avec les soldes, je n'ai pas encore les chiffres mais on est peut-être au double
- Le Maxclients d'apache est réglé à 65 (nous avons fait différents essais)

Voilà, si cela peut vous aider à analyser ?

Merci d'avance.
 

Robinson

WRInaute passionné
65 seulement ? :O
Essaye avec 150 :)

Il serait bon dans un premier temps d'enregistrer le nombre de personnes connectées en même temps.
Et comme situation temporaire, tu vérifies ce nombre au chargement des pages, si trop élevé, tu bloques l'accès aux nouveaux arrivants. (utilisation de cookies)
 

julesdsl

WRInaute discret
Robinson a dit:
65 seulement ? :O
Essaye avec 150 :)

Salut et merci pour ton aide,

Je ne veux pas être péssimiste mais je ne pense pas que de passer le Maxclients à 150 soit une bonne idée... si mes calculs sont bons chaque process apache prends environ 25Mo en Ram donc 25x150... il nous faudrait quasiment 4Go de Ram (nous n'en avons que deux).

Nous avons fait des essais mais au delà de 80 le serveur commence à swapper et là c'est le cauchemar.

Dis-moi si tu pense que mon calcul est erroné ou s'il y a quelque chose que je zap ?

A+
 

fandecine

WRInaute passionné
Si tes process font 25 Mo c'est que ce n'est pas optimisé! :wink:

1 - A la compilation de PHP désactive tout ce dont tu ne te sert pas
2 - Idem pour apache
3 - sur le deuxiéme serveur (celui des images) installe tous tes fichiers statiques (js, cs etc ...), puis sur le serveur principal tu peux alors mettre keepalive à Off et maxrequestperchild à 1, cela évitera que la taille de tes processus augmente dans le temps. Ensuite tu peux refaire le calcul du maxclient.
4 - Ensuite, je ne connais pas ta liberté d'intervention sur le code, tu peux installer memcache avec PHP. Il peut te servir à mettre en cache les paniers des utilisateurs ce qui limitera considérablement les accés BDD. Tu peux aussi y cacher les requetes BDD.

Il y aurais encore beaucoup à dire mais, pour te donner un exemple, sur une config identique (serveur 1 apache+php et serveur 2 lighttpd +images + css + js +php pour la partie admin) installée sur deux Dedibox je sert jusqu'à 25.000 VU/Jour (il est surement possible d'aller au delà mais cela ne s'est pas encore produit :cry: :wink: )
 

julesdsl

WRInaute discret
fandecine a dit:
Si tes process font 25 Mo c'est que ce n'est pas optimisé! :wink:

1 - A la compilation de PHP désactive tout ce dont tu ne te sert pas
2 - Idem pour apache
3 - sur le deuxiéme serveur (celui des images) installe tous tes fichiers statiques (js, cs etc ...), puis sur le serveur principal tu peux alors mettre keepalive à Off et maxrequestperchild à 1, cela évitera que la taille de tes processus augmente dans le temps. Ensuite tu peux refaire le calcul du maxclient.
4 - Ensuite, je ne connais pas ta liberté d'intervention sur le code, tu peux installer memcache avec PHP. Il peut te servir à mettre en cache les paniers des utilisateurs ce qui limitera considérablement les accés BDD. Tu peux aussi y cacher les requetes BDD.

Il y aurais encore beaucoup à dire mais, pour te donner un exemple, sur une config identique (serveur 1 apache+php et serveur 2 lighttpd +images + css + js +php pour la partie admin) installée sur deux Dedibox je sert jusqu'à 25.000 VU/Jour (il est surement possible d'aller au delà mais cela ne s'est pas encore produit :cry: :wink: )


Salut fandecine,

Merci pour ton aide.

J'ai lu ton thread sur l'optimisation serveur et m'en suis inspiré.

C'est sûr que os-commerce pourrait être encore optimisé mais cela demande du temps dont nous ne disposons pas étant donné la situation de crise... disons en tout cas qu'il nous faut commencer par ce qui sera le plus efficace et rapide.

En ce qui concerne les modules Apache et PHP inutiles, il me semble que le ménage à été fait. Par contre il est clair que PHP5 est bien plus gourmand en ram que PHP4.

Pour ce qui est des configs MaxRequestPerClient=1 et KeepAlive->off, cela n'étant valable que si tous les fichiers statiques sont délivrés par lighttpd, je pense que nous ne pourrons pas optimiser cela rapidement (nous le ferons dans un second temps).

Il nous reste donc la solution d'installer memcache... est-ce compliqué ou long à mettre en oeuvre (je ne l'ai jamais fait) ?

Merci d'avance.
 

julesdsl

WRInaute discret
J'en profite pour vous communiquer les chiffres du jour :
8945 visiteurs uniques
170115 pages vues
1623437 hits

Mais j'imagine qu'il y a pas mal de monde qui n'a pas attendu les 30s à 50s nécessaires pour qu'une page soit délivrée... :(
 

NxtGen

WRInaute impliqué
étrange tout de meme...
9000 vu/jour ce n'est pas si énorme que ca
je fesais tourner ~15000 vu/jour sur une dédibox avec la config par defaut, mais certes, c'était pas du oscommerce :)
 

fandecine

WRInaute passionné
julesdsl a dit:
Salut fandecine,

Merci pour ton aide.

J'ai lu ton thread sur l'optimisation serveur et m'en suis inspiré.

C'est sûr que os-commerce pourrait être encore optimisé mais cela demande du temps dont nous ne disposons pas étant donné la situation de crise... disons en tout cas qu'il nous faut commencer par ce qui sera le plus efficace et rapide.

En ce qui concerne les modules Apache et PHP inutiles, il me semble que le ménage à été fait. Par contre il est clair que PHP5 est bien plus gourmand en ram que PHP4.

Pour ce qui est des configs MaxRequestPerClient=1 et KeepAlive->off, cela n'étant valable que si tous les fichiers statiques sont délivrés par lighttpd, je pense que nous ne pourrons pas optimiser cela rapidement (nous le ferons dans un second temps).

Il nous reste donc la solution d'installer memcache... est-ce compliqué ou long à mettre en oeuvre (je ne l'ai jamais fait) ?

Merci d'avance.

Je viens te t'envoyer un MP et de publier un Tuto sur l'installation de memcache :wink:

https://www.webrankinfo.com/forum/viewt ... 617#832617

Ce qu'il faut pas faire :mrgreen:
 

julesdsl

WRInaute discret
oberon a dit:
9000 vu par jour c'est l'audience d'un petit blog sur un hébergement mutualisé à 50€ par an non ?

Salut,

Je veux bien qu'il y ai encore de l'optimisation à faire, nous y travaillons... cela dit, on ne peut absolument pas comparer un site sous os-commerce (même bien optimisé) avec un blog dont les pages sont en cache 9 fois sur 10 (donc quasiment un site statique)...

A mon avis.
 

julesdsl

WRInaute discret
Salut à tous,

Merci pour votre aide précieuse, et tout particulièrement à fandecine.

Nous sommes finalement sortis de notre situation de crise en prenant les mesures suivantes (si ça peut aider d'autres personnes sous os-commerce) :

Nous avons :
- déporté les images sur le serveur hébergeant MySQL et elles sont maintenant servie par lighttpd (gain faible)
- fait le ménage dans les modules Apache et extensions PHP chargées et réajusté la config d'Apache (gain faible)
- viré certaines requètes inutiles sur la table specials, notamment une requête chargée d'afficher les produits de façon aléatoire les produits en soldes sur la page d'accueil du site (gain significatif sur le serveur DB)
- installé eAccelerator (gain 10% de charge environ)
- ajusté le wait_timeout sur le serveur MySQL (gain moyen)
- désactivé le cache des urls rewritée (contrib SEO URL) dans la base de données (gain fort) c'est là que se situait le goulot d'étranglement.

Voilà, il nous reste encore quelques optimisations à faire (essayer qq trucs avec memcache) mais nous avons déjà retrouvé des serveurs "dans le vert"... l'utilisation mémoire du serveur WWW est passée de 1,3Go à 300Mo et le load average de 15 à 0,6 ;)

PS : les process Apache sont redescendu autour de 20Mo

A+
 

Discussions similaires

Haut