Frage Welche Art von Server benötige ich, um 10 Millionen Anfragen und MySQL-Anfragen pro Tag zu bearbeiten? [geschlossen]


Ich bin ein Neuling der Serveradministration und ich suche nach einem leistungsfähigen Hosting-Service, um meine neue Website zu hosten. Diese Website ist im Grunde ein Back-End eines mobilen Online-Spiels, und es wird:

  • Behandeln Sie bis zu 10 Millionen HTTPS-Anfragen und MySQL-Abfragen pro Tag
  • Speichern Sie bis zu 2000 GB große Dateien auf der Festplatte
  • Übertragen Sie wahrscheinlich 5000 GB Daten pro Monat
  • Es läuft auf PHP und mySQL
  • haben 10 Millionen Datensätze in der MySQL-Datenbank, für jeden Datensatz gibt es 5-10 Felder, jeweils rund 100 Bytes

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

  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. Und ich habe Rackspace kontaktiert, aber seltsamerweise sagten sie, dass Cloudsites nicht für meine Anforderungen geeignet sind. Ich frage mich, ob es andere Cloud-Hosting-Unternehmen gibt.
  4. Jede andere alternative Methode?

18
2018-03-19 06:52


Ursprung


Wir haben das mit 2 Linux-Servern mit 8 Gigs ram, der MySQL ist ein MySQL-Cluster und die DB ist im Speicher schnell gespeichert, CPU ist nie wirklich, wenn Sie eine gute Distribution verwenden, und die Festplatte wird nur verwendet werden stündliche Snapshots zu machen, gibt Ihnen Redundanz im Falle eines Fehlers. Vielleicht möchten Sie auch mysqltuner installiert haben, so können Sie Indizes usw. im Auge behalten und die beste Verwendung von allem machen und auch viele Indizes hinzufügen und eine langsame Abfragen protokollieren, da für das Web das wirklich 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? Azurblau, Amazon, RackSpace, GoGrid, Heroku? - bbqchickenrobot


Antworten:


Ein billiger Desktop?

Lass uns in die Mathematik gehen.

  • 10 Millionen Anfragen.
  • Das ergibt 416667 Anfragen pro Stunde.
  • Das sind 6944 Anfragen pro Minute.
  • Das ergibt 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 ist trivial - ernsthaft, gilt die gleiche Mathematik.
  • Das bricht auf 208 GB / Tag zusammen
  • Das bricht auf 8 GB / Stunde zusammen
  • Das bricht auf 148MB / Minute ab
  • Das ergibt 2,5MB / Sekunde, 25Mbit. Double for Peak - 50Mbit, trivial für jedes Hosting-Center. Wird dich aber kosten.

  • Speichern Sie 2000 GB auf der Festplatte. Das sind 2x2000 GB Festplatten in einem RAID? Es sei denn, es ist für die Datenbank, hat eine Menge komplexer IO, dann ist es etwas zwischen einigen Dutzend Discs und eine Menge von 73 GB 15.000RPM SAS-Discs in einem RAID 10 (ca. 60 Discs), um die I / O benötigt - das Frage ist nicht ohne viel mehr Informationen über Datenzugriffsmuster verantwortlich.

  • 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 einige Leute noch andere größere kommerzielle Datenbanken verwenden.

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

Man würde sagen, das hängt von der Logik ab (wie viel Berechnungen im PHP-Teil, Intelligenz oder Mangel an Programmierern und viele andere Fragen).

Im Ernst, das ist ein nicht-triviales Setup. Lassen Sie sich von einigen Spezialisten untersuchen.

Im Grunde musst du runterkommen und deine Hausaufgaben erledigen. Viele Fragen sind in dieser Form nicht zu beantworten. Vor allem, weil Sie sich nicht um Ihre Daten kümmern ...

  • Sicherungen?
  • Kein Notfallplan? Ich meine, Server sterben - also ist es in Ordnung, wenn die Site seit Tagen nicht verfügbar ist, während der Austausch konfiguriert ist?

31
2018-03-19 07:01



Danke für deine Antwort. Das PHP ist einfach, ich denke, die Hauptlast ist auf MySQL, ich habe einige MySQL-Abfragen auf meinem Laptop (Core2 Duo) mit WAMP unter Windows getestet. Bei 10 Millionen Einträgen in mySQL kostet jede Abfrage durchschnittlich 0,1 Sekunden. Wie viel stärker ist Quad Core bei der Verarbeitung von MySQL-Abfragen? - Calvin
Vergiss den Quadcore. Ihr Laptop Sinkt in IO - und IO ist, wo Datenbanken nicht begrenzt sind. Sie haben eine Festplatte, das ist langsam und robust (latop). Server verwenden MULTIPLE-Festplatten, die FAST (aber nicht robust) sind. Ich benutze einen Quad-Core-SQL-Server von MS und kann mehr als 500 Batches pro Sekunde auf einfache Auswahl (ein Batch ist eine Auswahl) ohne Ausklingen der CPU verarbeiten - aber ich bekomme eine Menge Disc-Aktivität auf einem Disc-Subsystme, die 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
Ihr SSL-Verkehr muss verschlüsselt / entschlüsselt werden, Sie können dies auf einem Balancer entlasten und einen Reverse-Proxy für einen normalen http-Server ausführen. Dies sollte die Latenz niedrig halten. Sie können auch Verschlüsselung in Hardware auch tun .......en.wikipedia.org/wiki/SSL_acceleration  wenn das Budget für Ihre Datenbanknutzung keine Rolle spielt ramsan.com/success/ccpgames.htm - The Unix Janitor


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

  • Wie TomTom bereits erwähnt hat, ist es schwierig / unmöglich genaue Spezifikationen zu geben, da viele davon vom Design und der Implementierung Ihrer Anwendung abhängen. Hardware, die mir oder jemand anderem X Anfragen / Sek. Gibt, funktioniert möglicherweise nicht gut für Sie.
  • Ich habe einen Low-End-dedizierten MySQL-Server (Intel Core2 Duo E4600 2,40 GHz, 4 GB RAM) mit einem Durchschnitt von 100 Anfragen / Sekunde (fast 10 Millionen / Tag) mit einer CPU-Leerlaufrate von 90%. Abgesehen von einigen grundlegenden Verbesserungen an der Konfiguration läuft es gut, da es schwer gelesen wird (+ 95% Lesevorgänge) und der aktive Datensatz leicht im Speicher enthalten ist. Berücksichtigen Sie bei der Auswahl der Server-RAM-Größe die Größe Ihres aktiven Sets, da dies einen großen Unterschied machen kann. Stellen Sie sicher, dass Sie den Unterschied zwischen Ihrer Datenbankgröße und der Größe des aktiven Datensatzes verstehen. Zum Beispiel meine Datenbanken insgesamt ~ 7GB, aber die aktive Menge ist wahrscheinlich nur ein paar 100 MB.
  • Ähnlich habe ich einen Apache-Server mit ähnlichen Spezifikationen, der ~ 1 Million Anfragen pro Tag mit einer durchschnittlichen CPU-Leerlaufrate von ~ 95% liefert. Anfragen sind eine Mischung aus sehr einfachen AJAX-Abfragen und komplexeren MediaWiki-Seiten.
  • Benchmarking Ihrer spezifischen Anwendung ist ein guter Anfang in dem Versuch, genau zu bestimmen, was Sie brauchen. Sie möchten nicht unterschätzt werden, aber überschätzt werden kann wegen der möglichen Verschwendung von Geld und Aufwand genauso schlecht sein.
  • Berücksichtigen Sie nicht nur die durchschnittliche Anforderungsrate, sondern auch die Spitzenrate. Sie möchten keinen Server, der nur mit der durchschnittlichen Rate umgehen kann, da die Anfrageraten über Tag, Woche und Monat stark variieren können. Zum Beispiel kann ich den Verkehr während der Spitzenzeiten am Wochenende 3-4x bekommen, wie ich es in den minimalen Stunden während der Woche mache. Wie viel es variiert, hängt von Ihrer Anwendung und Benutzerbasis ab.
  • Können Sie Ihre Datenbank- / HTTP-Anfragen zwischenspeichern? Dies kann Ihre Anfragerate mit billiger / weniger Hardware drastisch erhöhen, abhängig davon, wie viel Sie zwischenspeichern können.
  • Berücksichtigen Sie jetzt Ihre Skalierungsoptionen für zukünftiges Wachstum statt später. Eine gute Option könnte die Verwendung einer horizontalen Skalierung sein, die es Ihnen ermöglicht, mit minimaler Hardware zu beginnen und einfach nach Bedarf zu wachsen.
  • Das richtige Design Ihrer Anwendungsschicht kann sich enorm auf die ultimative Leistung auswirken. Eine fehlerhafte SQL-Abfrage für eine Tabelle ohne Indizes kann um Größenordnungen langsamer sein als eine ordnungsgemäß erstellte. In ähnlicher Weise können schlecht konfigurierte Apache / MySQL-Server viele Male langsamer sein als bei richtiger Einrichtung.

7
2017-12-18 20:46