Können Sie mir bei meiner Kapazitätsplanung helfen?


132

Dies ist eine kanonische Frage zur Kapazitätsplanung

Verbunden:

Ich habe eine Frage zur Kapazitätsplanung. Kann die Server Fault-Community bei folgenden Problemen helfen:


  • Welche Art von Server brauche ich, um mit einer bestimmten Anzahl von Benutzern umzugehen?
  • Wie viele Benutzer kann ein Server mit bestimmten Spezifikationen verwalten ?
  • Ist eine Serverkonfiguration für meinen Anwendungsfall schnell genug ?
  • Ich baue eine Social-Networking-Site auf: Welche Hardware benötige ich?
  • Wie viel Bandbreite brauche ich für ein Projekt ?
  • Wie viel Bandbreite wird eine bestimmte Anzahl von Benutzern in einer Anwendung verwenden ?

Antworten:


97

Die Server-Fault-Community kann Ihnen bei der Kapazitätsplanung im Allgemeinen nicht weiterhelfen. Die beste Antwort lautet: "Vergleichen Sie Ihren Code mit Hardware, die mit der in der Produktion verwendeten vergleichbar ist, und ermitteln Sie eventuelle Engpässe aktuelle Hardware kann damit umgehen und / oder wie viel Hardware-Leistung Sie benötigen, um Ihre Ziel-Workload zu bewältigen " .


Bei der Kapazitätsplanung spielen eine Reihe von Faktoren eine Rolle, die wir auf einer Question and Answer-Site nicht angemessen bewerten können:

  • Die Anforderungen Ihres speziellen Codes / Ihrer Software
  • Externe Ressourcen (Datenbanken, andere Software / Sites / Server)
  • Ihre Arbeitsbelastung (Spitze, Durchschnitt, Warteschlange)
  • Der Geschäftswert der Leistung (Kosten-Nutzen-Analyse)
  • Die Leistungserwartungen Ihrer Benutzer
  • Eventuell bestehende Service Level Agreements / vertragliche Verpflichtungen

Eine ordnungsgemäße Analyse dieser und anderer Faktoren würde den Rahmen einer einfachen Frage-und-Antwort-Site sprengen: Sie erfordern detaillierte Kenntnisse über Ihre Umgebung und Anforderungen, die nur Ihr Team (oder ein ausreichend entlohnter Berater) effizient sammeln kann.


Einige Axiome der Kapazitätsplanung

  1. RAM ist günstig
    Wenn Sie erwarten, dass Ihre Anwendung viel RAM verbraucht, sollten Sie so viel RAM einsetzen, wie Sie sich leisten können.
  2. Festplatte ist billig
    Wenn Sie viel Festplatte benötigen, sollten Sie große Laufwerke kaufen - viele davon.
    SAN / NAS-Speicher ist weniger günstig und sollte in der Regel eher groß als klein sein, um später kostspielige Upgrades zu vermeiden.
  3. Die Arbeitslast wächst mit der Zeit
    Angenommen, Ihr Ressourcenbedarf steigt.
    Beachten Sie, dass der Anstieg möglicherweise nicht symmetrisch ist (CPU und RAM steigen möglicherweise schneller als die Festplatte) und möglicherweise nicht linear.
  4. Strom ist teuer
    Obwohl der Preis für RAM und Festplatten erheblich gesunken ist, sind die Stromkosten stetig gestiegen. Alle diese zusätzlichen Festplatten und RAM-Speicher sowie die CPU-Leistung erhöhen Ihre Stromrechnung (oder die Rechnung, die Sie an Ihren Provider zahlen). Planen Sie entsprechend.

1
Sie sollten das völlig fallen lassen und die Integration nach Teilen verwenden!
Gilles

+1. Und RAM, wie Sie in Axiom Nr. 1 vorschlagen, ist eines dieser Dinge, die massive Vorteile haben. Dies erhöht beispielsweise die Fähigkeit, das Caching besser zu nutzen, wodurch Sie weniger Datenbankabfragen durchführen können, was wiederum die Belastung der Festplatte und der CPU verringert. Ich bin oft frustriert von Hosting-Anbietern, die eine schnelle CPU mit ihren Servern und eine minimale Menge an RAM anbieten.
Steve Wortham

31
Ich würde diese hinzufügen: Festplattenkapazität ist billig. Disk - Performance wird teuer. Vor allem, da die Festplattengröße über 10 Jahre zunimmt, sich die Gesetze der Physik jedoch nicht geändert haben. Als Faustregel verwende ich (ab heute; Juni 2014) für eine optimale Leistung: 75 IOPs pro Spindel bei SATA, 200 IOPs pro Spindel bei FC und 1500 IOPs pro SSD. Große SATA-Laufwerke bieten ein recht schlechtes IO-Verhältnis pro Gigabyte.
Sobrique

Mitte 2019 sollte niemand mehr Spindelantriebe kaufen.
Robert Harvey

@RobertHarvey niemand sollte mehr SAS- Spindelantriebe kaufen . Um die Kapazität für Server mit Petabox-Skalierung zu erhalten, müssen immer noch viele SATA-Laufwerke beschafft werden, oder Sie müssen am Ende viel bezahlen.
Mikko Rantalainen

44

Planung der Anzahl virtueller Maschinen

Wenn es darum geht, herauszufinden, wie viele VMs Sie auf einem einzelnen Host einplanen sollten, gibt es eigentlich keine wirklich guten Faustregeln. In der Tat gibt es nur einen, und es ist nur eine Art von Gut:

Die Anzahl der virtuellen Maschinen wird normalerweise durch den Arbeitsspeicher begrenzt, außer wenn dies nicht der Fall ist.

Welches ist nicht sehr hilfreich. Wenn auf diesen VMs Anwendungen mit niedriger CPU-Auslastung ausgeführt werden, basiert Ihr Limiter auf RAM. Jede VM-Plattform verfügt über ihre eigenen Funktionen zum Überbelegen des Arbeitsspeichers. Daher ist dies nicht so einfach wie TOTAL_RAM / Per-VM-RAM = MachineCount, aber diese Nummer ist ein guter Planungsgegenstand.

Aber was ist, wenn Ihre VMs nicht nur mit einer niedrigen CPU-Auslastung arbeiten?


Die Anzahl der virtuellen Maschinen wird durch sieben separate Ressourcen begrenzt, die der Hostmaschine zur Verfügung stehen:

  • Hypervisor VMware, Xen, HyperV, KVM, was auch immer. Jedes hat seine eigenen Funktionen, die sich auf die Zählung auswirken. Einige sind sehr gut in der Deduplizierung von Speicherseiten, andere weniger. Einige erlauben keine Überbelegung der CPU-Kapazität, andere nicht.
  • CPU-Kerngeschwindigkeit Hiermit wird die maximale Single-Thread-Leistung begrenzt, die eine VM ausführen kann. 36 Kerne einer 1,8-GHz-CPU können 64,8-GHz-CPU auf einem Host sein, aber kein einzelner Thread wird schneller als 1,8 GHz ausgeführt.
  • CPU Core Count (CPU-Kernanzahl) Mit dieser Angabe wird die Obergrenze für die maximale CPU-Leistung angegeben, die Sie erzielen können.
  • System-RAM Wie oben beschrieben, wird die Anzahl der VMs begrenzt, die Sie ausführen können. Bestimmte Hypervisoren sind in Sachen Deduplizierung von Speicherseiten besser als andere. Wenn Sie also 100 identische VMs ausführen, können Sie viel mehr davon auf solchen Deduplizierungssystemen packen, als wenn Sie 100 vollständig unterschiedliche VMs ausführen.
  • Festplattengröße Jedes Betriebssystem-Image benötigt eine bestimmte Menge an Speicherplatz. Sie benötigen genügend Platz, um alles zu verstauen. Aufgrund der Festplattengröße ist die Anzahl der VMs, die Sie hosten können, nach oben begrenzt.
  • E / A-Bandbreite Die den VMs zugrunde liegende Festplatte kann maximal so viele E / A pro Sekunde verarbeiten, wie sie verarbeiten kann. Wenn Sie zu viel darauf werfen, bleiben die Systeme stehen und warten, bis die E / A abgeschlossen sind. Dies setzt eine Obergrenze für die Anzahl der E / A-belastenden VMs, die Sie ausführen können.
  • Netzwerkbandbreite Für VMs mit Netzwerknutzung wird durch die verfügbare Netzwerkbandbreite eine Obergrenze für die Anzahl solcher VMs festgelegt, die Sie auf einem bestimmten Host ausführen können.

All dies hängt davon ab, was Sie mit Ihren VMs machen. Einige Dinge, an die Sie sich erinnern sollten:

  • Es gibt kein generisches System.
  • Einen generischen Webserver gibt es nicht , da der Anwendungscode von CDN- Servern mit wenigen Handgriffen bis hin zu großen Deep-Crack-Inhalten wie Video-Transcodierung reichen kann.
  • Es gibt keinen generischen Datenbankserver . Diese können von winzigen Systemen, die nur zur Verfolgung des Sitzungszustands verwendet werden, bis zu sehr großen Systemen reichen.

Um herauszufinden, wie viele VMs Sie in ein Host-System packen können, müssen Sie wissen, wie Ihre Systeme ausgeführt werden und was sie für einen ordnungsgemäßen Betrieb benötigen. Sobald Sie das wissen, können Sie die Zählung planen. Und noch besser, finden Sie heraus, wie umfangreich Sie brauchen, um Ihre Host-Systeme zu erstellen!


Verwenden Sie vor allem VM-basierte Systeme auf zwei separaten physischen Servern mit ungebundenen VMs. Dies ermöglicht einen Hardwareausfall ohne Verlust des gesamten Systems. VMs können ohne Datenverlust zwischen identischen Servern wechseln. Nur Sitzungen gehen verloren und werden dann neu aufgebaut. Persönlich würde ich an ein Hosting-Unternehmen auslagern, das diese Dienste anbietet (Google oder Amazon). Sie sind teuer, aber viel billiger als Ihre eigenen.
Random-IT

2
Was ich in VM-Implementierungen am häufigsten unterbewertet gesehen habe, ist Festplatten-E / A. Die meisten Leute verstehen Festplattenspeicher, CPU-Geschwindigkeit und Arbeitsspeicher. Sie vergessen die Festplattenleistung.
Dan Pritts

6

Stellen Sie sicher, dass Sie die richtige Frage stellen.

  • Computer sind billig
  • Zukünftige Bedürfnisse sind sehr schwer vorherzusagen
  • Planen Sie die Skalierung und nicht den Kauf im Voraus

Wenn Sie nicht wissen, was Sie brauchen, bedeutet dies, dass Sie nicht viel brauchen. Wenn Sie eine heiße Website haben, haben Sie wahrscheinlich auch ein Betriebsteam, das weiß, wie viel RAM, Datenträger, E / A, Netzwerk usw. Ihre App benötigt. Wenn Sie in der Traumphase sind, sollten Sie mit Ihrem Desktop beginnen und sich hocharbeiten.

Stellen Sie sicher, dass Sie eine Vorstellung davon haben, wie Sie skalieren, wenn die Dinge größer werden. Können Sie weitere Server hinter dem Load Balancer hinzufügen? Können Sie den Redis-Server zerbrechen?

Auch ein eigenes Rechenzentrum zu haben ist zum Kotzen. Ein Rechenzentrum (auch wenn es sich nur um einen Computer handelt) ist eine Ablenkung von Ihrem eigentlichen Zweck. Sie können nicht einfach einen Computer kaufen, ihn einschalten und weggehen. Sie benötigen Klimaanlage, Luftfilterung, zuverlässige Stromversorgung, zuverlässiges Internet, Backups, Ersatzteile, physischen Raum zum Wachsen, Kapazität zum Wachsen, stolperfreie Stromkabel und zig andere Kopfschmerzen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.