2008-09-22 5 views
16

Wir arbeiten an einer Website für einen Kunden, der (einmal) erwartet wird, eine gute Menge an Verkehr am ersten Tag zu erhalten. Es gibt Pressemitteilungen, Leute bloggen darüber usw. Ich bin ein wenig besorgt, dass wir am ersten Tag auf unser Gesicht fallen werden. Was sind die wichtigsten Dinge, die Sie betrachten würden, um (im Voraus ohne echte Verkehrsdaten) sicherzustellen, dass Sie nach einem großen Start stehen bleiben können.Best Practices für die Einhaltung der Startdatenverkehr Burst

Details: Dies ist ein L/A/M/PHP Stack, der ein intern entwickeltes MVC-Framework verwendet. Dies wird derzeit auf einem Server mit Apache und MySQL gestartet, aber wir können es bei Bedarf auflösen. Wir installieren bereits memcached und führen so viel Caching auf PHP-Ebene durch, wie wir uns vorstellen können. Einige der Seiten sind eher abfrageintensiv, und wir verwenden Smarty als unsere Vorlagen-Engine. Denken Sie daran, dass es keine Zeit gibt, einen dieser Hauptaspekte zu ändern - dies ist nur das Setup. Auf welche Dinge sollten wir achten?

Antwort

1

Um eine Spitze (oder Spitze) Leistung vorzubereiten oder zu behandeln, würde ich zuerst feststellen, ob Sie durch einige einfache Leistungstests mit etwas wie jmeter fertig sind.

Es ist einfach einzurichten und zu beginnen und gibt Ihnen frühe Metriken, ob Sie eine erwartete Spitzenlast handhaben werden.

Wenn Sie sich jedoch an Ihre zeitlichen Vorgaben halten, müssen Sie andere statische Schritte vorbereiten, um die höchste Aufmerksamkeit zu erregen (z. B. Pressemitteilungen, wenn Ihr Starttag beginnt). Stellen Sie außerdem sicher, dass Sie das clientseitige Caching optimal nutzen (1 weniger Anforderung an Ihren Server kann den Unterschied ausmachen). Das Web, das bereits für extrem hohe Skalierbarkeit und effektives Content-Caching entwickelt wurde, ist in diesen Situationen der beste Freund.

Es gibt einen ausgezeichneten Podcast mit hoher Skalierbarkeit auf software engineering radio on the design of the new Guardian website, wenn sich die Dinge beruhigen.

viel Glück beim Start

9

Zuerst messen, dann optimieren. Haben Sie einen Belastungstest durchgeführt? Wo sind die Engpässe?

Sobald Sie Ihre Engpässe kennen, dann können Sie intelligent entscheiden, ob Sie zusätzliche DB-Boxen oder Web-Boxen benötigen, jetzt würden Sie nur raten.

Wie vergleichen sich Ihre Loadtesting-Ergebnisse mit dem erwarteten Datenverkehr? Können Sie den erwarteten Verkehr 2x bewältigen? 5x? Wie einfach/schnell können Sie & Release Extra Hardware erwerben? Ich bin mir sicher, die Geschäftsanforderung besteht darin, beim Start nicht zu versagen, also stellen Sie sicher, dass Sie Lose der verfügbaren Kapazität haben, Sie können es immer wieder freigeben, wenn sich die Last stabilisiert hat und Sie wissen, was Sie brauchen.

1

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

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

Dies bedeutet, dass Sie Ihren Dienst verteilt auf mehrere Server haben kann. Kann es sich nicht leisten, mehr als einen Server dauerhaft zu haben? Verwenden Amazon E3 - Es für die Umsetzung an Ort und Stelle gut für Dinge wie diese (Schalters auf ein paar mehr Server die Last zu bewältigen)

2)-Code in einigen „High Load“ Einschränkungen

Zum Beispiel, wenn Sie Ihre Suche ist ineffizient - schalten Sie es aus, wenn die Last ein bestimmtes Niveau erreicht."Entschuldigung, wir sind beschäftigt, versuchen Sie es später erneut für die Suche"

3) Lasttest ... Verwenden Sie etwas wie ApacheBench, um Ihre Server zu testen.

4) Persönlich denke ich, dass das Schalten von "Keep-Alive" Verbindungen besser ist. Es kann leicht die Gesamtleistung reduzieren, aber - es bedeutet, dass anstelle von etwas, wo die Website für ein paar Leute gut funktioniert, und die anderen Timeouts erhalten, jeder bekommt inkonsistenten Service, wenn es zu dieser Ebene

Linux Format hat ein guter Artikel über "Wie man einen Schrägstrich überlebt" ... was ich in der Vergangenheit als nützlich empfunden habe. Es ist available online as a PDF

3

Ich würde zumindest alle statischen Inhalt ausklammern. Richte einen anderen vhost woanders ein und lade alle Grafiken/css/js darauf. Sie können zusätzliche Zyklen kaufen, um die Portion dieser Art von Inhalt zu entladen. Wenn Sie wirklich besorgt sind, können Sie sich registrieren und einen Content-Distribution-Service nutzen. Es gibt jetzt viele ähnliche Akamai und ziemlich billig.

Eine andere Idee könnte sein, apache mod_proxy zu verwenden, um die generierte Seitenausgabe für eine bestimmte Zeit zu behalten. APC wäre auch ziemlich brauchbar .. Sie könnten Output-Pufferung Capture + die letzte modifizierte Zeit der zugehörigen Daten auf der Seite verwenden und die APC-Cache-Version verwenden. Wenn die Seite nicht mehr gültig ist, regenerieren und speichern Sie sie erneut in APC.

Viel Glück, es wird eine Lernerfahrung sein!

2

Haben Sie eine Beta-Phase, in der Sie so vielen Benutzern wie möglich erlauben, die Leistung Ihrer Website zu messen, Fehler zu beheben, bevor Sie live gehen.

Sie können die Anzahl der Benutzer entweder explizit in einer privaten Betaversion oder in einer halböffentlichen Betaversion im Google-Stil festlegen, wobei jeder Nutzer eine Reihe von Empfehlungen hat, die er seinen Freunden anbieten kann.

0

Schauen Sie sich mit Varnish - es ist ein Cache-Reverse-Proxy-Server (wie Tintenfisch, aber viel mehr Einzelzweck). Ich habe einige ziemlich große Seiten hinter mir gelassen, es schien wirklich gut zu funktionieren.

1

Grundlegende erste Schritte, um Ihre Website für hohen Traffic zu verhärten.

1) Verwenden Sie ein kostengünstiges Tool wie https://browsermob.com/, um Ihre Site zu laden. Zumindest sollten Sie 100K einzigartige Besucher pro Stunde betrachten. Wenn Sie eine Anzeige von der MSN-Startseite erhalten, sollten Sie in der Lage sein, 500.000 Unique pro Stunde zu verarbeiten.

2) Verschieben Sie alle statischen Grafik-/Videoinhalte in ein CDN. Edgecast und Amazon sind zwei ausgezeichnete Möglichkeiten.

3) Verwenden Sie Jet Profiler, um Ihren MySQL Server zu profilieren, um langsam ablaufende Abfragen zu analysieren. Geringfügige Änderungen können enorme Vorteile haben.

+1

Messen Sie zuerst, bevor Sie Platz auf einem teuren CDN kaufen. Sie können es vielleicht oder auch nicht brauchen, selbst wenn Sie es bekommen, verwenden Sie es vielleicht falsch. Messen! –