Was für einen Server brauche ich, um 10 Millionen Anfragen und mySQL-Abfragen pro Tag zu bearbeiten? [geschlossen]

22

Ich bin ein Anfänger in der Serververwaltung und suche nach einem leistungsstarken Hosting-Service, um meine neue Website zu hosten. Diese Website ist im Grunde ein Back-End eines mobilen Online-Spiels und wird:

  • bearbeiten Sie täglich bis zu 10 Millionen HTTPS-Anfragen und mySQL-Abfragen
  • Speichern Sie bis zu 2000 GB-Dateien auf der Festplatte
  • Übertragen Sie wahrscheinlich 5000 GB Daten pro Monat
  • Es läuft auf PHP und MySQL
  • Die mySQL-Datenbank enthält 10 Millionen Datensätze. Für jeden Datensatz gibt es 5-10 Felder mit jeweils ca. 100 Bytes

Ich weiß wirklich nicht, welche Art von Server ich brauche, um diese Anforderungen zu erfüllen. Meine Frage lautet:

  1. Welche CPU / RAM benötige ich für einen dedizierten Server oder VPS?
  2. Welche Hosting-Unternehmen können diese Art von dediziertem Server oder VPS anbieten?
  3. Was ist mit Cloud Computing? Ich habe Amazon EC2 recherchiert, aber es scheint mir kompliziert zu sein. Und ich habe Rackspace kontaktiert, aber seltsamerweise sagten sie, Cloudsites seien nicht für meine Anforderungen geeignet. Ich frage mich, ob es andere Cloud-Hosting-Unternehmen gibt.
  4. Irgendeine andere alternative Methode?
Calvin
quelle
wir haben das mit 2 linuxservern mit 8 gigs ram umgangen, der mysql ist ein mysql cluster und die db ist schnell schnell im speicher gespeichert, die cpu ist eigentlich nie viel, wenn man eine gute distro benutzt und die festplatte muss nur verwendet werden Stündliche Snapshots zu erstellen, bedeutet Redundanz im Fehlerfall. Vielleicht möchten Sie auch mysqltuner installiert haben, damit Sie die Indizes usw. im Auge behalten und alles bestmöglich nutzen können. Außerdem können Sie viele Indizes hinzufügen und langsame Abfragen protokollieren, da dies im Web sehr billig sein kann. Fügen Sie einfach eine Last hinzu Balancer an der Front, um den Verkehr zu teilen
minus4
Warum nicht einen Cloud-Service nutzen? Azure, Amazon, RackSpace, GoGrid, Heroku?
bbqchickenrobot

Antworten:

32

Ein billiger Desktop?

Kommen wir zur Mathematik.

  • 10 Millionen Anfragen.
  • Das sind 416667 Anfragen pro Stunde.
  • Das sind 6944 Anfragen pro Minute.
  • Das sind 116 Anfragen pro Sekunde.

Verdoppeln Sie das (Spitzenlast) und wir sprechen von einer Last, die ein billiger Quad-Core-Desktop bewältigen kann, wenn die Abfragen einfach genug sind und Sie nicht wirklich sagen, wie komplex sie sind.

  • 5000 GB pro Monat sind trivial - im Ernst, es gilt die gleiche Mathematik.
  • Das sind 208GB / Tag
  • Das bricht auf 8GB / Stunde zusammen
  • Das bricht auf 148MB / Minute zusammen
  • Das sind 2,5MB / Sekunde, 25Mbit. Double for Peak - 50 Mbit, trivial für jedes Hosting-Center. Kostet dich allerdings.

  • Speichern Sie 2000 GB auf der Festplatte. Das sind 2x2000 GB Festplatten in einem RAID? Es sei denn, es handelt sich um eine Datenbank mit vielen komplexen E / A-Vorgängen, zwischen einigen Dutzend Datenträgern und zahlreichen SAS-Datenträgern mit 73 GB und 15.000 U / min in einem RAID 10 (ca. 60 Datenträger), um die erforderlichen E / A-Vorgänge zu erhalten Frage ist nicht ohne eine Menge Informationen über Datenzugriffsmuster zu beantworten.

  • Läuft PHP und MySQL - Mein Handy kann das;) Die Frage ist, wie komplex die Anwendung ist. MySQL kann oder kann hier keine akzeptable Lösung sein, BTW l. - Das würde mehr Tests erfordern. Es gibt einen Grund, warum manche Leute immer noch andere größere kommerzielle Datenbanken verwenden.

  • Welche CPU / RAM benötige ich für einen dedizierten Server oder VPS?

Man würde sagen, dass das von der Logik abhängt (wie viel Berechnungen im PHP-Teil, Schlauheit oder Mangel an Programmierern und vielen anderen Fragen).

Im Ernst, dies ist eine nicht triviale Einstellung. Lassen Sie sich von einigen Spezialisten untersuchen.

Grundsätzlich müssen Sie runter und Ihre Hausaufgaben erledigen. Viele der Fragen sind in dieser Form nicht zu beantworten. Vor allem, weil Sie sich anscheinend nicht um Ihre Daten kümmern ...

  • Backups?
  • Kein Notfallplan? Ich meine, Server sterben - Sie sind also damit einverstanden, dass die Site tagelang außer Betrieb ist, während der Ersatz konfiguriert ist?
TomTom
quelle
Danke für deine Antwort. Das PHP ist einfach, ich denke, die Hauptlast liegt bei mySQL. Ich habe einige mySQL-Abfragen auf meinem Laptop (Core2 Duo) mit WAMP unter Windows getestet. Bei 10 Millionen Datensätzen in mySQL kostet jede Abfrage durchschnittlich 0,1 Sekunden. Wie viel besser kann Quad Core mit MySQL-Abfragen umgehen?
Calvin
2
Vergiss den Quad-Core. Ihr Laptop SUCKS in IO - und IO ist der Ort, an dem Datenbanken nicht begrenzt werden. Du hast EINE Festplatte, das heißt LANGSAM und ROBUST (latop). Server verwenden MEHRERE FESTPLATTEN, die SCHNELL (aber nicht robust) sind. Ich verwende einen Quad-Core-SQL-Server von MS und kann mit einfachen Auswahlen (eine Auswahl ist eine Auswahl) mehr als 500 Stapel pro Sekunde verarbeiten, ohne die CPU zu belasten - aber ich bekomme eine Menge Plattenaktivität auf einem Platten-Subsystem, das möglicherweise ist mehr als 30 mal so schnell wie deine (und das ist noch nicht beeindruckend). Discs sind die Grenze. Plus richtige Programmierung.
TomTom
1
Ihr SSL-Datenverkehr muss verschlüsselt / entschlüsselt werden. Möglicherweise möchten Sie ihn auf einem Balancer auslagern und einen Reverse-Proxy für einen normalen HTTP-Server ausführen. Dies sollte die Latenz gering halten. Sie können die Verschlüsselung auch in Hardware durchführen ....... en.wikipedia.org/wiki/SSL_acceleration Wenn das Budget für Ihre Datenbank keine Rolle spielt,
The Unix Janitor
7

Um einige meiner Erfahrungen hinzuzufügen, die hilfreich sein können:

  • Wie bereits von TomTom erwähnt, ist es schwierig / unmöglich, genaue Spezifikationen anzugeben, da viele davon vom Design und der Implementierung Ihrer Anwendung abhängen. Hardware, die mir oder jemand anderem X Requests / Sek gibt, funktioniert möglicherweise nicht gut für Sie.
  • Ich besitze einen dedizierten MySQL-Server (Intel Core2 Duo E4600, 2,40 GHz, 4 GB RAM), der durchschnittlich 100 Anfragen pro Sekunde (fast 10 Millionen pro Tag) mit einer CPU-Leerlaufrate von 90% bedient. Abgesehen von einigen grundlegenden Änderungen an der Konfiguration läuft sie gut, da sie überlastet ist (+ 95% Lesezugriffe) und der aktive Datensatz leicht im Speicher enthalten ist. Berücksichtigen Sie die Größe Ihres aktiven Sets, wenn Sie die Größe des Server-RAMs auswählen, da dies einen großen Unterschied machen kann. Stellen Sie sicher, dass Sie den Unterschied zwischen der Größe Ihrer Datenbank und der Größe des aktiven Datensatzes verstehen. Zum Beispiel haben meine Datenbanken insgesamt ~ 7 GB, aber der aktive Satz ist wahrscheinlich nur ein paar 100 MB groß.
  • Ebenso habe ich einen Apache-Server mit ähnlichen Spezifikationen, der ~ 1 Million Anfragen pro Tag bedient, was einer durchschnittlichen CPU-Leerlaufrate von ~ 95% entspricht. Anfragen sind eine Mischung aus sehr einfachen Kartendaten-AJAX-Abfragen und komplexeren MediaWiki-Seiten.
  • Das Benchmarking Ihrer spezifischen Anwendung ist ein guter Anfang, um genau zu bestimmen, was Sie benötigen. Sie möchten nicht unterschätzen, aber eine Überschätzung kann aufgrund der möglichen Verschwendung von Geld und Aufwand genauso schlimm sein.
  • Berücksichtigen Sie nicht nur die durchschnittliche Anforderungsrate, sondern auch die Spitzenrate. Sie möchten keinen Server, der den Durchschnittspreis kaum bewältigen kann, da die Anforderungsraten über Tag, Woche und Monat erheblich variieren können. Zum Beispiel kann ich an Wochenenden während der Hauptverkehrszeiten das 3-4fache des Verkehrsaufkommens erzielen, wie dies in den Mindeststunden während der Woche der Fall ist. Wie stark es variiert, hängt von Ihrer Anwendung und der Benutzerbasis ab.
  • Können Sie eine Ihrer Datenbank- / HTTP-Anforderungen zwischenspeichern? Dies kann Ihre Anforderungsrate mit billigerer / weniger Hardware drastisch erhöhen, je nachdem, wie viel Sie im Cache speichern können.
  • Berücksichtigen Sie Ihre Skalierungsoptionen für zukünftiges Wachstum jetzt und nicht später. Eine gute Option ist möglicherweise die horizontale Skalierung, mit der Sie mit minimaler Hardware beginnen und bei Bedarf problemlos wachsen können.
  • Das ordnungsgemäße Design Ihrer Anwendungsebene kann einen enormen Einfluss auf die endgültige Leistung haben. Eine fehlerhafte SQL-Abfrage für eine Tabelle ohne Indizes kann um Größenordnungen langsamer sein als eine ordnungsgemäß gestaltete. In ähnlicher Weise können schlecht konfigurierte Apache / MySQL-Server um ein Vielfaches langsamer sein als bei korrekter Einrichtung.
uesp
quelle