2008-09-22 4 views
16

Nous travaillons sur un site Web pour un client qui (pour une fois) devrait obtenir une bonne quantité de trafic dès le premier jour. Il y a des communiqués de presse, des gens en parlent, etc. Je suis un peu inquiète que nous tombions à plat sur notre visage le premier jour. Quelles sont les principales choses que vous devriez regarder pour vous assurer (à l'avance, sans données de trafic réel) que vous pouvez rester debout après un grand lancement.Bonnes pratiques pour résister à l'éclatement de la circulation le jour du lancement

Détails: Il s'agit d'une pile L/A/M/PHP, utilisant un cadre MVC développé en interne. Ceci est actuellement lancé sur un serveur, avec Apache et MySQL tous les deux dessus, mais nous pouvons le casser si nécessaire. Nous installons déjà memcached et faisons autant de mise en cache au niveau PHP que nous pouvons le penser. Certaines pages sont plutôt gourmandes en requêtes, et nous utilisons Smarty comme moteur de template. Gardez à l'esprit qu'il n'y a pas de temps pour changer l'un de ces aspects majeurs - c'est juste la configuration. Quelles sortes de choses devrions-nous surveiller?

Répondre

1

Pour préparer ou gérer une performance de pic (ou pic), je voudrais d'abord déterminer si vous êtes prêt à travers quelques tests de performance simples avec quelque chose comme jmeter.

Il est facile à configurer et à démarrer et vous donnera des mesures précoces si vous allez gérer une charge de pointe prévue. Cependant, compte tenu de vos contraintes de temps, d'autres mesures à prendre consisteraient à préparer des versions statiques de contenu qui attireront la plus grande attention (comme des communiqués de presse, si votre jour de lancement). Assurez-vous également que vous faites le meilleur usage de la mise en cache côté client (1 requête de moins à votre serveur peut faire toute la différence). Le web déjà conçu pour une évolutivité extrêmement élevée et une mise en cache efficace du contenu est votre meilleur ami dans ces situations.

Il ya un excellent podcast sur l'évolutivité élevée sur software engineering radio on the design of the new Guardian website lorsque les choses se calment. Bonne chance pour le lancement

9

Mesurez d'abord, puis optimisez. Avez-vous fait un test de charge? Où sont les goulots d'étranglement? Une fois que vous connaissez vos goulets d'étranglement, vous pouvez décider intelligemment si vous avez besoin de boîtes DB supplémentaires ou de boîtes Web, vous devineriez juste maintenant.

De même, comment vos résultats de test de charge se comparent-ils à votre trafic attendu? Pouvez-vous gérer 2x le trafic attendu? 5x? Comment facile/rapide pouvez-vous acquérir & libérer du matériel supplémentaire? Je suis sûr que l'exigence de l'entreprise est de ne pas échouer lors du lancement, alors assurez-vous que vous avez lots de capacité disponible, vous pouvez toujours le relâcher après la stabilisation de la charge et vous savez ce dont vous avez besoin.

1

je, personnellement, faire quelques petites choses

1) Mettre dans une sorte de équilibreur de charge/base de données du système de réplication

Cela signifie que vous pouvez avoir votre diffusion de services sur plusieurs serveurs. Vous ne pouvez pas vous permettre d'avoir plus d'un serveur en permanence? Utilisez Amazon E3 - Il est bon de mettre en place pour des choses comme ça (commutateur sur quelques serveurs pour gérer la charge)

2) du code dans certaines restrictions « forte charge »

Par exemple, si votre recherche est inefficace - l'éteindre quand la charge atteint un certain niveau."Désolé, nous sommes occupés, réessayez plus tard pour la recherche"

3) Test de charge ... Utilisez quelque chose comme ApacheBench pour tester vos serveurs.

4) Personnellement, je pense qu'il est préférable de désactiver les connexions "Keep-Alive". Cela peut légèrement réduire les performances globales, mais - cela signifie qu'au lieu d'avoir quelque chose où le site fonctionne bien pour quelques personnes, et que les autres obtiennent des délais, tout le monde obtient un service incohérent, si cela arrive à ce niveau

Linux Format un bon article sur "Comment survivre à un slashdotting" ... que j'ai trouvé utile dans le passé. C'est available online as a PDF

3

Je voudrais au moins factoriser tout le contenu statique. Configurez un autre vhost ailleurs et chargez tous les graphiques/css/js dessus. Vous pouvez acheter des cycles supplémentaires pour décharger la diffusion de ce type de contenu. Si vous êtes vraiment concerné, vous pouvez vous inscrire et utiliser un service de distribution de contenu. Il y a beaucoup de choses similaires à Akamai et assez bon marché.

Une autre idée pourrait être d'utiliser apache mod_proxy pour garder la sortie de page générée pendant une durée spécifique. APC serait également utilisable. Vous pouvez utiliser la capture de tampon de sortie + la dernière heure de modification des données associées sur la page et utiliser la version mise en cache d'APC. Si la page n'est plus valide, vous la régénérez et la stockez dans APC à nouveau.

Bonne chance, ce sera une expérience d'apprentissage!

2

Avoir une période bêta où vous autorisez autant d'utilisateurs que vous pouvez gérer, mesurer les performances de votre site, résoudre les bugs avant de mettre en ligne.

Vous pouvez soit contrôler le nombre d'utilisateurs explicitement dans une version bêta privée, ou une version bêta semi-publique de style Google où chaque utilisateur a un certain nombre de références qu'ils peuvent offrir à leurs amis.

0

Regardez dans l'utilisation Varnish - c'est un serveur proxy inverse de mise en cache (comme le calamar, mais beaucoup plus à usage unique). J'ai dirigé de très gros sites derrière, ça a l'air de marcher très bien.

1

Basic Premiers pas pour renforcer votre site en cas de trafic intense.

1) Utilisez un outil peu coûteux tel que https://browsermob.com/ pour tester votre site. Au minimum, vous devriez regarder 100K visiteurs uniques par heure. Si vous obtenez une annonce hors de la page d'accueil de MSN, regardez pour être en mesure de gérer 500K uniques par heure.

2) Déplacez tout contenu graphique/vidéo statique sur un CDN. Edgecast et Amazon sont deux excellents choix.

3) Utilisez Jet Profiler pour profiler votre serveur MySQL afin d'analyser les requêtes à exécution lente. Les changements mineurs peuvent avoir d'énormes avantages.

+1

Mesurez d'abord avant d'acheter de l'espace sur un CDN cher. Vous pouvez ou ne pouvez pas en avoir besoin, même si vous l'obtenez, vous l'utilisez peut-être mal. Mesure! –

Questions connexes