OVH Community, votre nouvel espace communautaire.

Conseil pour site à forte charge


sich
11/05/2015, 09h50
Oh varnish à l'air vraiment sympas oui, effectivement il faut bien soigner la configuration pour ne pas avoir de problèmes j'ai vu qu'il y'avait pas mal de choses à prendre en compte.
Merci pour tous ces éléments, ça me permet d'envisager la future archi différemment de ce que j'avais pensé au début. C'est une première pour moi d'avoir autant de monde en même temps sur un site, j'en apprends tous les jours c'est bien

captainadmin
10/05/2015, 20h45
Hello,

Le plus simple actuellement serait de mettre en place un nginx qui va gérer nativement ton cache et qui est facilement intégrable surtout avec php5-fpm.
C'est un couple qui fonctionne parfaitement.
Si besoin tu mets un varnish devant qui va absorber tout le trafic static avec une facilité déconcertante. Cependant la mise en place de varnish est assez sensible car il faut identifier les paramètres corrects pour qu'ils correspondent au mieux à ton besoin.

En tout cas il est vivement conseillé d'avoir un 2eme serveur assurant le failover de ton site, surtout si le trafic y est important.
Mais ca ne t'empêche pas d'optimiser en amont car ton problème sera toujours présents quelque soit le nombre de serveur.

Bon courage

Kioob
10/05/2015, 15h33
Avec les entêtes qui vont bien, CloudFlare agira comme un gros cache oui. Beaucoup moins configurable qu'un Varnish maison, mais ça fait le job. Si tu arrives à mettre ça en cache coté CloudFlare, 80% du boulot est fait.

sich
10/05/2015, 15h25
Oui j'ai discuté avec le client pour commencer par mettre des en-têtes avec un cache, ne serait-ce que 5min. Sachant que le site n'est mit à jour qu'une fois par jour.... Une fois à jour par la peine de tout recalculer à chaque fois. Pas d'espace privé en dehors du client, donc je pense faire un domaine à part pour le backend, avec des règles de no cache et la partie publique avec un cache en max age 300 et public. Après je ne sais pas si cloudflare va mettre en cache du .php à voir.

C'est surtout le cpu qui monte vite quand le site monte en charge. Mais je pense que déjà la modification des règles de cache devrait aider.

Je dois faire des tests en ce sens (modification des règles de cache) dans la semaine qui vient, on va bien voir ce que ça va donner.

Kioob
10/05/2015, 13h22
Bonjour,

si je comprends bien il s'agit d'utilisateurs connectés, avec typiquement des sessions et des entêtes no-cache. C'est un peu le pire cas pour CloudFlare.

N'est-il pas possible de changer ces entêtes afin de déclarer un cache private, avec un temps d'expiration de quelques secondes ? Je ne suis pas persuadé que CloudFlare les mettrait en cache, mais en tous cas tu pourrais mettre ton propre Varnish qui le ferait.

Maintenant sur le principe ajouter des ressources, même ponctuellement (genre une VM RunAbove ajoutée automatiquement, 2 heures par jours), pourrait probablement aider oui, à condition d'identifier la cause des ralentissements. CPU ? disque ? réseau ? firewall ? RAM ?

sich
10/05/2015, 05h52
'jour à tous,

Je vois que sur ce forum il y'a pas mal de monde qui sait gérer des serveurs à gros trafic web et je serai bien preneur de quelques conseils

J'ai un client qui a un site sur un serveur que je gère, très calme en journée mais le soir il peut prendre d'un seul coup 8 à 10k utilisateurs connectés en même temps. Ces utilisateurs attendant une mise à jour du dit site font tous du ctrl+F5 à gogo pour rafraichir les pages et ainsi by passer les proxy et autres cache.

Le serveur encaisse plutôt bien mais par moment lors de grosse pointe il a un peu de mal quand même et se retrouve à ralentir ce qui ne plait pas trop au client.
Il tourne sur une config sur debian wheezy plutôt classique avec apache2.2, php-fpm, xcache, mod_mem_cache et tout ça derrière un cloudflare.

J'ai songé à passer le tout sur 3 serveurs avec un cluster mysql éventuellement une réplique des fichiers via drdb (voir un simple rsync vu que seule la bdd bouge souvent), la gestion des sessions sur memcache et la répartition de charge étant assurée par une ip load balancing d'ovh.

Mais avant d'en arriver là je me demande si il n'y a pas quelque chose à faire pour optimiser tout ça... Ou si je ne dois pas plutôt monter mon cluster et mettre devant deux serveurs en frontaux web qui feront rien que du proxy, avec un paramétrage pour ignorer les en-têtes no-cache. Sachant que le site bouge assez peu en fait et qu'il n'y a de toute façon pas de partie privée pour les visiteurs.

L'avantage d'avoir plusieurs serveurs étant aussi la redondance en cas de défaillance d'une machine.

Voili, donc selon vous, un cluster de 3 machines serait suffisant ou le passage par 2 frontaux qui ne feraient vraiment que du proxy serait un gros plus ?

Merci pour vos retours.

Sich