web-dev-qa-db-fra.com

Se préparer à une forte augmentation du trafic

Notre société participera cette semaine à une émission télévisée aux heures de grande écoute. Elle nous a dit que nous pouvions nous attendre à environ 200 000 visiteurs sur notre site Web en même temps.

Nous ne recevons normalement que 100 visites par jour, alors je ne sais pas si nous pouvons gérer autant de trafic. Nous sommes hébergés par 1and1.co.uk.

Existe-t-il des précautions que nous pouvons prendre pour éviter que notre site ne soit paralysé?

35
SamTheMan

Pendant la période de trafic intense, votre serveur devrait pouvoir traiter toutes les demandes formulées par les visiteurs de votre site Web. Cependant, le nombre de connexions simultanées gérées par le serveur est limité. Il est donc préférable de traiter les demandes de page le plus rapidement possible.

Voici quelques suggestions à considérer dans ces situations,

Améliorations au niveau de l'application:

1. Réduisez les requêtes HTTP pour accélérer les temps de chargement des pages.

a) Combinez tous les fichiers JS ensemble dans un seul fichier JS combiné et tous les fichiers CSS dans un seul fichier CSS combiné.

b) Réduisez les fichiers JS et CSS afin de réduire la taille du fichier et de le télécharger plus rapidement.

c) Utiliser des sprites CSS - Lorsque vous combinez la plupart ou la totalité de vos images dans un sprite, vous convertissez plusieurs demandes d'images en une seule. Il vous suffit ensuite d'utiliser la propriété CSS background-image pour afficher la section de l'image dont vous avez besoin.

d) Retarder le téléchargement d’image avec chargement paresseux, cela sera utile pour réduire le nombre de requêtes http.

2. Préparer des pages légères qui attendent plus de visites:

a) Exclure les éléments décoratifs tels que les images ou Flash dans la mesure du possible; utilisez du texte au lieu des images dans la navigation du site et chrome, et mettez la plupart du contenu au format HTML.

b) Utilisez des pages HTML statiques plutôt que des pages dynamiques; ces derniers mettent plus de charge sur vos serveurs. Vous pouvez également mettre en cache la sortie statique des pages dynamiques pour réduire la charge du serveur.


Améliorations au niveau du serveur:

1. Réduisez les valeurs de délai d'attente du serveur en consultant votre fournisseur d'hébergement (ne doit pas être trop bas).

Lorsque les délais sont plus courts, la connexion sera bientôt libérée afin que le serveur puisse gérer plus de connexions.

2. Utilisez des services tiers comme CloudFlare pour la mise en cache de données statique et pour protéger votre site Web contre les utilisateurs malveillants et les attaques telles que DDOS.

. Mettez à niveau votre matériel serveur - Mettez à niveau les mémoires physique et virtuelle, augmentez les limites des processus d'E/S et d'entrée, le cas échéant. Votre hébergeur sera en mesure de vous aider au mieux.

4. Code dynamique du cache - Utilisez APC pour mettre en cache PHP l'opcode.

5. Équilibrage de la charge - Répartissez la charge sur plusieurs serveurs d'équilibrage de la charge.


  • Lorsque toutes les mesures requises sont prises, il est maintenant temps de vérifier si le site Web est prêt pour un pic de trafic important.

    Certains services tiers, tels que loadimpact.com, fournissent des tests de charge avec un trafic simulé. L'analyse vous aidera à comprendre la charge que votre site Web peut gérer et ce qui peut être amélioré.

  • De même, pendant la période de pointe du trafic, évitez les opérations nécessitant une utilisation intensive du processeur, telles que les tâches cron, de sauvegarde de site Web, etc.

26
Nikhil Supekar

Tout d'abord, je recommanderais Cloudflare. Vous pouvez créer un compte de base gratuit. Le trafic sera acheminé via des centres de données locaux afin de minimiser le nombre de sauts de serveur. Cloudflare est également idéal pour la mise en cache de contenu et dispose d'une protection DDOS.

Autre que cela, essayez de réduire la graisse de votre couche de service. Assurez-vous de ne pas avoir de requêtes de base de données excessivement gonflées dans la base de données, ni de logique trop gourmande en ressources processeur pouvant être simplifiée.

Essayez également de mettre en cache toutes les requêtes de base de données. Redis ou Memcache sont d'excellentes options pour la mise en cache des requêtes. OpCaching est un autre facteur à prendre en compte si vous utilisez un langage non compilé.

Mais le plus important est probablement de garder votre contenu statique (c.-à-d. Css, js et images) aussi optimisé que possible. Réduisez tout votre Javascript, combinez-les tous dans un seul fichier si possible. N'oubliez pas que chaque fichier inclus dans votre site doit créer plusieurs sauts de serveur pour atteindre l'utilisateur final.

Ne sous-estimez pas non plus la bande passante et le temps de chargement que vous pouvez économiser en compressant les images!

Enfin, envisagez de surveiller les performances avec des outils tels que New Relic.

Bonne chance!!

Source: l'un des développeurs du 12ème site le plus populaire au Royaume-Uni, selon Alexa.

7
Ewan Valentine

Pensez à tester en charge votre site. Il existe des outils gratuits disponibles tels que JMeter , The Grinder , et Gatling , qui peuvent simuler un grand nombre de visiteurs sur votre site.

En testant à l'avance l'impact d'un trafic dense, vous pouvez déterminer si les réglages que vous avez effectués ont été efficaces et, le cas échéant, rechercher d'autres réglages.

5
James_pic

Si vous êtes sur 1and1, vous êtes probablement à la recherche d'un hébergement bon marché. Un hébergement bon marché signifie que vous avez tendance à tout faire dans une boîte. Un problème majeur pour l'hébergement est que lorsque vous hébergez tout sur la même boîte, vous partagez des ressources entre des parties importantes de votre site:

  • Votre serveur Web (Apache, Nginx, etc.)
  • Votre base de données (MySQL, PostGreSQL, etc.)

Et étant 1and1, vous utiliserez probablement un panneau de configuration comme Plesk ou cPanel, ce qui signifie que vous avez une couche supplémentaire d'éléments en concurrence pour les ressources. Et le dernier clou dans ton cercueil? Vous n'avez pas beaucoup de ressources. Vous avez peut-être un processeur (ou un processeur virtuel) et très peu de RAM (si vous avez plus de 2 Go, je serais surpris).

Lorsque nous avons abandonné 1and1, nous avons opté pour un fournisseur d’hébergement évolutif (Amazon Web Services dans notre cas) et nous avons fait plusieurs choses que nous ne pouvions pas auparavant.

  1. Amazon a ses propres instances pour les bases de données (RDS) et notre base de données a donc des ressources à respirer. La plupart des systèmes de SGBDR vivent et respirent RAM et c’est quelque chose que nous pourrions obtenir en abondance. Désormais, vous pouvez également configurer des disques durs SSD avec des E/S élevées, ce qui rend l’autre point d’étranglement de la base de données (écriture de données) moins pénible.
  2. Nous avons un équilibreur de charge avec 2 serveurs Web. Avec un backend DB lourd, nous n’avions pas besoin de frontaux haut de gamme, nous avons donc deux serveurs bas de gamme.
  3. Nous sommes passés à quelque chose qui pourrait amener des machines entièrement configurées à la demande. En utilisant quelque chose comme Chef ou Puppet, vous pouvez facilement ajouter de nouveaux serveurs Web. Il est 100% transparent pour vos utilisateurs finaux si vous le faites correctement. AWS a également Opsworks afin que vous puissiez construire vos scripts directement dans AWS.
  4. Changez la taille de votre instance à la demande. C'est un élément clé pour nous. Si la base de données s'enlise, je peux la supprimer et la relancer sous forme de version plus grande en quelques minutes. Oui, cela impliquerait des temps d'arrêt, mais quelques minutes d'inactivité sont préférables aux heures d'un site terriblement lent. Totalement peur des temps d'arrêt? Conservez une réplique en lecture dans les coulisses, réduisez-la, remplacez-la par une instance plus importante, passez à la maîtrise et vous évitez les temps morts pour le coût d'une machine supplémentaire.

AWS n'est pas le seul jeu en ville (Azure, Rackspace, etc.), mais assurez-vous que 1and1 peut être adapté à votre demande.

3
Machavity

Vous n'avez pas très bien défini "tout à la fois". Disons que vous recherchez 200 000 visiteurs uniques en une demi-heure. C'est 111 demandes par seconde, sans tenir compte des visiteurs qui cliquent et ouvrent plus de pages (ce que vous voulez, non?).

La première chose que je ferais, ce sont les récits de Google sur des personnes qui gèrent un volume de trafic similaire. Beaucoup de gens écriront leurs expériences sur leurs blogs pour aider les autres. Vous remarquerez qu'il est extrêmement difficile de trouver une histoire sur le fait que quelqu'un le fasse sur un hébergement partagé, et il y a une raison à cela. Recherchez des solutions telles que Digital Ocean ou Amazon Web Services, en commençant par utiliser le centre de données le plus proche de votre public. Et je conviens que décharger toutes vos ressources statiques sur CloudFlare, même sur un compte gratuit, est une excellente idée.

En dehors de cela, testez votre code en ajoutant des scripts de chronométrage en haut et en bas de vos pages, en supposant qu'ils soient dynamiques. En supposant que mon hypothèse sur les chiffres soit correcte, vous devez pouvoir servir chaque page en moins de 10 millisecondes pour maintenir toute sorte de performance acceptable. Si vous répondez à toutes les demandes via SSL par défaut, désactivez-le pendant quelques jours pendant le passage de la tempête.

En outre, 200 000 sons semblent très effrayants, mais gardez à l'esprit qu'il n'est pas nécessaire que vous soyez trop effrayé (même si vous devriez l'être un peu). Par exemple, lorsque le magazine Paper a publié NSFW photos de Kim Kardashian, il n'a fallu que quatre serveurs Web de taille moyenne et Amazon ELB pour gérer la charge, selon cet article (SFW) . Je ne pense vraiment pas que votre configuration actuelle résoudra le problème, mais vous ne devriez pas vraiment avoir besoin de seize serveurs Web avec 48 cœurs alimentés chacun par leur propre petit générateur nucléaire.

1
John Cave

Vérifiez auprès de votre fournisseur de services Internet et vérifiez si votre bande passante est limitée. Mettez à niveau votre plan d'hébergement si la bande passante est insuffisante pour le volume de trafic attendu. Vous ne souhaitez pas afficher de message "Limite de bande passante dépassée" à vos visiteurs.

1
Salman A

Connaissez cette vieille question, mais très bonne, et souhaiteriez avoir de bonnes informations sur le sujet il y a quelques années ...

De temps en temps, nous avons des sites (liés aux activités scolaires) diffusés sur les réseaux de télévision. Puisque nous travaillons avec un budget très serré, la solution est l’équilibrage de charge. Les boîtiers VPS peuvent être assez bon marché ces jours-ci et nous ne faisons que dupliquer notre contenu sur 2-3 d'entre eux.

Regardez ceci article et lisez à propos de "round-robin".

Plus d'informations sur les tests de charge peuvent être trouvés ici .

Lorsque nous avons commencé à essayer de gérer les pics, nous avions simplement notre contenu sur 2 ou 3 boîtiers VPS et placé leur NS dans les paramètres du registraire.

1
Woody

De par mon expérience personnelle, je sais que même le meilleur VPS a ses limites. Je vais vraiment profane est ici.

L'un de nos sites Web sportifs était hébergé sur un VPS. Au cours d'un match opposant le Pakistan et l'Inde, nous avons reçu plus de 70 000 hits. Nous avions un VPS Inmotinghosting avec 4 Go RAM et un traitement quelque chose de GHz, une bande passante de 1 To, un stockage SSD et d’autres éléments fantaisistes. Nous avons également activé une version payante de Cloudflare.

C'était juste au milieu du match et le site Web était tombé en panne. Il n'est jamais venu en direct pendant le match et nous avons potentiellement perdu plus de 70 000 visiteurs. C’est plus tard que nous avons su que notre bande passante était consommée et que sans l’hôte source, CDN est la plupart du temps inutile.

Leçon: En plus d'obtenir un VPS et de régler un CND tel que Cloudflare, réduisez la taille de la page. Le moins c'est le mieux. Vous pouvez utiliser la mise en cache des pages et la minification de code, ce qui est très pratique pour gérer le trafic.

1
imranhunzai

Bonne chance pour réécrire votre site web, changer de fournisseur et migrer le contenu vers un CDN en moins d'une semaine.

Comme vous l'avez peut-être compris dans les autres réponses, il s'agit du minimum que vous devez faire pour que votre site soit prêt pour une augmentation importante du trafic. Bien que, si vous utilisez actuellement 1and1.co.uk, vous ne disposez probablement pas d'une équipe solide d'ingénieurs réseau, d'administrateurs de base de données, de programmeurs et d'optimiseurs frontaux à votre service.

Ce n'est pas susceptible de se produire, n'est-ce pas?

Vous n’avez pas dit ce que vous faites avec votre site Web, que ce soit un panier virtuel ou un contenu statique. Si tel est le cas, vous pourrez peut-être survivre au tsunami si vous extrayez tout le site en fichiers statiques et que vous les publiez à la place du site normal (sauvegardez d'abord la version actuelle).

Vous devriez également parler à 1and1 (avec votre carte de crédit en main).

0
symcbean

Le mieux est d'avoir des serveurs dédiés avec plusieurs clusters résoudra votre problème

0
Himanshu Singla