Frage

Wir arbeiten an einer Website für einen Kunden, der (für einmal) wird erwartet, dass eine angemessene Menge an Verkehr am ersten Tag zu bekommen. Es gibt Pressemitteilungen, die Leute darüber bloggen, etc. Ich bin ein wenig besorgt darüber, dass wir auf unserem Gesicht am ersten Tag flach fallen fahren. Was sind die wichtigsten Dinge, die Sie (im Voraus ohne reale Verkehrsdaten), um sicherzustellen, aussehen würden, dass Sie nach einem großen Start stehen bleiben können.

Details: Dies ist ein L/A/M/PHP Stapel, einen intern entwickelte MVC-Framework verwenden. Dies wird derzeit auf einem Server gestartet, mit Apache und MySQL beide drauf, aber wir können das brechen, wenn es sein muss. Wir installieren bereits Memcached und so viel PHP-Level-Caching zu tun, wie wir denken können. Einige der Seiten sind eher abfragen intensiv und wir sind mit Smarty als unsere Template-Engine. Denken Sie daran, es gibt keine Zeit jeder dieser wichtigen Aspekte zu ändern - das ist das nur die Einrichtung ist. Welche Art von Dingen sollten wir achten?

War es hilfreich?

Lösung

Um eine Spitze (oder Spitze) Leistung vorbereiten oder handhaben, würde ich zunächst feststellen, ob Sie durch einige einfache Performance-Tests bereit sind, mit so etwas wie jmeter .

Es ist einfach zu installieren und loslegen und werden Sie früh Metriken geben, ob Sie eine erwartete Spitzenlast behandelt.

Allerdings Ihre Zeitdruck, andere Schritte gegeben zu nehmen wäre statische Versionen von Inhalten herzustellen, die die höchste Aufmerksamkeit (wie Pressemitteilungen, wenn Ihr Starttag) anziehen wird. Achten Sie auch darauf, dass Sie die bestmögliche Nutzung des Client-seitiges Caching machen (1 weniger Anfrage an den Server kann den Unterschied machen). Die Bahn bereits entwickelt für extrem hohe Skalierbarkeit und effektive Nutzung Content-Caching ist Ihr bester Freund in diesen Situationen.

Es gibt eine ausgezeichnete Podcast auf hohe Skalierbarkeit auf Software Engineering Radio auf dem Design des neuen Wächter Website , wenn die Dinge beruhigen.

Glück auf dem Abschuss

Andere Tipps

Messen zuerst, dann optimieren. Haben Sie irgendeine loadtesting getan? Wo sind die Engpässe?

Sobald Sie wissen, Ihre Engpässe, dann können Sie auf intelligente Weise entscheiden, ob Sie zusätzliche DB-Boxen oder Web-Boxen benötigen, jetzt würde man nur raten werden.

Auch, wie sehen Ihre loadtesting Ergebnisse vergleichen gegen den erwarteten Verkehr? Können Sie den zu erwartenden Verkehr 2x umgehen? 5x? Wie leicht / schnell können Sie erwerben und zusätzliche Hardware veröffentlichen? Ich bin die Geschäftsanforderungen sicher nicht beim Start zum Scheitern verurteilt, so stellen Sie sicher, dass Sie viel der Kapazität zur Verfügung, können Sie immer es danach freigeben können, wenn die Last stabilisiert hat und Sie wissen, was Sie brauchen.

Ich würde zumindest Faktor aus alle statischen Inhalt. Setup eine andere vHost woanders und laden alle Grafiken / css / js auf sie. Sie können zusätzliche Zyklen kaufen, um die Portion dieser Art von Inhalten Abladen. Wenn Sie wirklich besorgt können Sie Registrierungs- und einen Content-Distribution-Service. Es gibt viele jetzt ähnlich wie Akamai und recht billig.

könnte andere Idee sein Apache mod_proxy zu nutzen, für eine bestimmte Zeit generierte Seite Ausgabe zu halten. APC wäre auch ganz brauchbar sein .. Sie könnten Ausgabepufferung Capture + die Zeit der letzten Änderung der entsprechenden Daten auf der Seite, und verwenden Sie die APC-Cache-Version verwenden. Wenn die Seite nicht mehr gültig ist, können Sie regenerieren und speichern in APC wieder.

Viel Glück, es wird eine Lernerfahrung sein!

eine Beta-Phase, wo Sie in so vielen Nutzern ermöglichen, wie Sie behandeln können, die Leistung Ihrer Website messen, Fehler trainieren, bevor Sie online gehen.

Sie können entweder die Anzahl der Benutzer in einer privaten Beta explizit steuern oder ein Google-Stil semi-öffentliches Beta, wo jeder Benutzer eine Reihe von Empfehlungen hat, die sie ihre Freunde anbieten können.

Ich würde persönlich tun, ein paar Dinge

Setzen Sie

1) in einer Art von Load Balancer / Datenbank-Replikationssystem

Das bedeutet, dass Sie Ihren Dienst verteilt über mehrere Server haben können. Nicht leisten kann, mehr als einen Server permanent haben? Verwenden Amazon E3 - Es für die Umsetzung an Ort und Stelle gut für Dinge wie diese (Schalter auf ein paar mehr Server die Last zu bewältigen)

2)-Code in einigen "High Load" Einschränkungen

Zum Beispiel, wenn Ihre Suche ineffizient ist - schalten Sie es aus, wenn die Last auf einem bestimmten Niveau bekommt. „Sorry, wir sind damit beschäftigt, versuchen Sie es später noch einmal für die Suche“

3) Belastungstest ... Verwenden Sie so etwas wie Apachebench Ihre Server zu betonen testen.

4) Persönlich denke ich, dass "Keep-Alive" Verbindungen aus besser Schalt ist. Es kann leicht die Gesamtleistung reduzieren, aber - es bedeutet, dass anstatt etwas mit dem sich der Standort gut für ein paar Leute arbeitet, und die anderen Timeouts bekommen, jeder bekommt inkonsequent Service, wenn es geht auf dieses Niveau

Linux-Format hat einen guten Artikel über „Wie ein Slashdottings, um zu überleben“ ... die ich nützlich in der Vergangenheit gefunden haben. Es ist online als PDF

Grund Erste Schritte Ihre Website für stark frequentierte zu härten.

1) Verwenden Sie ein Low-Cost-Tool wie https://browsermob.com/ laden-Testen Sie Ihre Seite? ˅. Zumindest sollten Sie bei 100K Besuchern pro Stunde suchen. Wenn Sie eine Anzeige aus der MSN-Homepage bekommen, schauen Sie in der Lage seiner 500K unique pro Stunde zu behandeln.

2) Bewegen Sie alle statischen Grafik / Video-Inhalte an einen CDN. Edgecast und Amazon sind zwei ausgezeichnete Wahl.

3) Verwendung Jet Profiler MySQL Server zum Profil keiner langsamen Abfragen ausführen zu analysieren. Kleinere Änderungen können große Vorteile haben.

Schauen Sie

in mit Varnish - es ist ein Caching-Reverse-Proxy-Server (wie Tintenfische, aber viel mehr einziger Zweck). Ich habe einige ziemlich große Websites dahinter läuft, schien es wirklich gut zu funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top