Schnell, wendig und günstig: Server mit ausreichender Leistung für kleine Unternehmensdatenbanken für weniger als 1000 US-Dollar
(c) Alexey Kovyazin, IBSurgeon, 21. September 2017 (letzte Aktualisierung - 29. September 2017)
Es ist einfach, einen leistungsstarken Server zu bekommen, wenn man bereit ist, viele $$$ auszugeben: Es gibt führende Anbieter wie Dell, HP und viele weniger bekannte Hardware-Unternehmen, die Ihnen gerne eine leistungsstarke Maschine verkaufen (in der Regel mit Lieferung in 4-6 Wochen).
Geld ist jedoch immer ein Problem, besonders für kleine Unternehmen und Start-ups, daher gibt es eine große Nachfrage nach „gut genugen" günstigen Lösungen. Dieser Artikel beschreibt den praktischen Ansatz für den Bau eines „gut genugen" Datenbankservers mit ausreichender Leistung für kleine Unternehmen. Er enthält auch Berechnungen und Links zu den spezifischen Produkten, die wir empfehlen.
Unser Unternehmen (IBSurgeon) bietet Datenbankberatung und Pflegedienste für Firebird-Datenbanken an, und wir sehen viele Arten von Servern (oder besser gesagt, Computer, die als Server verwendet werden). Große Kunden verwenden High-End-Konfigurationen mit SAN auf SSD-Basis, 350+ GB RAM und Dual-Top-Xeons an Bord, aber kleine und mittlere Unternehmen verwenden weniger leistungsstarke Maschinen, da sie nicht viel Rechenleistung benötigen und nicht viel Geld haben.
Wir haben festgestellt, dass viele Server tatsächlich übliche Workstations sind, und das Interessanteste ist, dass sie über Jahre und Jahre ziemlich stabil arbeiten. Es gibt einige wirklich exotische Dinge, wie Windows XP auf einem Computer mit 2 GB RAM (der Computer wurde 2002 gebaut!), aber die Mehrheit von ihnen sind nur „gut genuge" selbstgebaute Hardware-Lösungen.
Natürlich ist es eine Frage der Statistik, und niemand wird empfehlen, eine Workstation als Server zu verwenden, aber die Frage ist: Wo ist die Balance zwischen Stabilität und Kosten? Ist es ein guter Ansatz, einen billigen selbstgebauten Server in Bezug auf das Preis-Leistungs-Verhältnis zu verwenden? Was können wir für USD$1000 bekommen? Welche Risiken sind mit nicht teurer Hardware verbunden?
Wer könnte an einem Datenbankserver unter usd$1000 interessiert sein?
Betrachten wir die folgende Situation: ein Büro mit 20-25 Mitarbeitern, die 7x5 arbeiten, die Datenbankgröße liegt bei etwa 50 GB. Es ist eine typische Situation für ein kleines Unternehmen, das ein ERP- oder CRM-System oder eine spezifische Anwendung (z. B. ein Automatisierungssystem für Zahnarztpraxen) für kleine Geschäftsanwendungen auf Basis von Firebird verwendet.
Stellen wir uns vor, dass das Unternehmen nicht mit Geld überschwemmt ist und so viel wie möglich sparen möchte, ohne die Zuverlässigkeit zu verlieren, um eine gut genuge Leistung zu erzielen. Die verantwortliche Person im Unternehmen versteht, dass alle Hardware früher oder später ausfallen wird, und möchte die damit verbundenen Risiken verringern.
Welche Art von Server benötigen sie für eine Firebird-Datenbank dieser Größe und Last? Laut Firebird Hardware Guide ist die kritischste Ressource für die Datenbank die Festplatten-IO, danach RAM und zuletzt CPU (interessant, dass Kunden aus dem KMU-Bereich, wenn sie Server von großen Anbietern kaufen, oft Server mit leistungsstarken CPUs und langsamen Festplatten wählen, wahrscheinlich aufgrund von Marketingmaterialien, die die Bedeutung der CPU überbetonen).
Festplatten
Schnelle IO bedeutet, dass wir Solid-State-Laufwerke (SSDs) benötigen, da SSD der König der zufälligen Lese- und Schreibvorgänge ist. Natürlich ist SSD kein Allheilmittel für Datenbanken, aber es bietet wirklich hohe Leistung, und jetzt ist es die richtige Wahl für Datenbanken.
SSD gibt es in zwei Varianten - Enterprise-Grade- und Consumer-Grade-Laufwerke. Der Hauptunterschied zwischen ihnen ist eine Ressource, die grob als Anzahl der IO-Operationen berechnet wird, die sie ausführen können.
Zum Beispiel Samsung 850 Pro 256 GB MZ-7KE256BW - Consumer-Grade-SSD (basierend auf MLC-Technologie), es hat TBW (Total Bytes Written) 150 Petabytes und DWPD (Disk Writes Per Day) = 0,16. Oder einfacher ausgedrückt: Die Ressource kann als 40 GB Schreibvorgänge jeden Tag über 10 Jahre erklärt werden.
Aktualisierung: Wir hatten den Vorschlag, dass Samsung PM863a ($181,59) oder SM863a ($249) zuverlässiger sind als die 850 Pro, aber dennoch erschwinglich - im Wesentlichen können wir für zusätzliche $60 eine bessere Stabilität und eine Art Schutz vor elektrischen Überspannungen erhalten.
Ist das viel oder nicht? Wir haben einen Testserver mit Consumer-Grade-SSD, auf dem wir Lasttests durchführen, um die intensive Arbeit von 100 Verbindungen bei einer 60-GB-Datenbank zu simulieren. Jeden Tag werden 3 solcher Tests, jeweils 3 Stunden lang, gestartet - das bedeutet, dass diese Tests einen 9-Stunden-Arbeitstag simulieren. Die Tests laufen bereits seit 2 Jahren, und die verbleibende Ressource (laut Firmware) beträgt 54%.
Natürlich bedeutet ~50% der Ressource, dass das Laufwerk im nächsten Jahr ersetzt werden sollte… Ist das so schlimm? Alle paar Jahre steigt die Geschwindigkeit von SSDs und die Preise fallen: Die SSD im Beispiel hat 6 GB/s und kostet $137, in 2-3 Jahren wird es 12G-Laufwerke zum gleichen Preis geben.
Amazon-Preis ab USD$124
Enterprise-Grade-SSDs basieren auf einer anderen Technologie (SLC) und können ungefähr 30x mehr Operationen ausführen als die Consumer-Grade-SSD gleicher Größe. Außerdem kosten sie ungefähr 3x mehr als Consumer-Grade-SSDs. Die Frage ist: Brauchen wir wirklich 30x mehr IO-Runden für den kleinen Unternehmensserver zum 3-fachen Preis?
Wenn wir nach einer schnellen und erschwinglichen Lösung suchen, ist es sehr attraktiv, billige Consumer-Grade-SSDs zu verwenden und sie regelmäßig zu ersetzen (und ihre Ressource natürlich mit der Firmware zu überwachen).
Risiken im Zusammenhang mit SSD
Als vernünftige Menschen verstehen wir, dass Consumer-Grade-Hardware weniger Ressourcen und eine hohe Ausfallwahrscheinlichkeit hat, also müssen wir diese Chancen reduzieren. Wie können wir das reduzieren?
Um die Wahrscheinlichkeit eines plötzlichen Hardwareausfalls zu verringern, ist es notwendig, 2 SSDs für die Datenbank zu verwenden, die in RAID1 gebündelt sind. RAID1 bedeutet nicht, dass wir einen separaten RAID-Controller benötigen; es reicht aus, die RAID-Fähigkeiten der modernen Motherboard-Chipsätze zu nutzen - im Wesentlichen gibt es einen einfachen RAID-Controller ohne Cache.
Aktualisierung: Da billige RAID-Controller auf dem Motherboard die TRIM-Funktion von SSDs möglicherweise nicht unterstützen, wird empfohlen, Software-RAID einzurichten, das gleichzeitige Operationen auf Software-Ebene orchestriert, um Leistungseinbußen zu vermeiden.
Wenn es keinen Cache gibt, wie wird die Leistung sein? Moderne SSDs, wie die Samsung im Beispiel, haben eingebauten Cache und sehr intelligente Controller - sie sind also schnell genug ohne dedizierte RAID-Controller.
Natürlich ist es notwendig, die Festplatten Gesundheit zu überprüfen; normalerweise liefert die Firmware eine gut genuge Schätzung der Lebensdauer der Festplatten.
Backups
Natürlich benötigen wir Laufwerke für Backups. Die beste Wahl wird ein Paar SATA-Laufwerke mit je 2 TB sein - zum Beispiel Seagate SkyHawk 2TB Surveillance Hard Drive, mit 5900 U/min.
Amazon-Preis ist $74,99
Wir brauchen 2 HDDs, weil auch Backup-Laufwerke in RAID1 gesetzt werden müssen, um Schutz vor plötzlichem Hardwareausfall zu bieten. Diese Backup-Laufwerke können ziemlich langsam sein; ihr Hauptzweck ist es, Backups zu speichern und eine angemessene Geschwindigkeit für sequenzielles Lesen/Schreiben zu bieten. 5900-U/min-Laufwerke sind langsamer als 7200 U/min, aber sie gelten als zuverlässiger. Diese spezielle Serie von Laufwerken (Seagate SkyHawk) ist für lineare Schreibvorgänge ausgelegt: Das ist, was wir für Backups brauchen.
Risiken für Backup-Laufwerke
Das Risiko ist dasselbe wie bei SSDs, und wir schützen uns auf die gleiche Weise: RAID1 und Überwachung. Es sollte eine geringe Chance geben, dass beide Laufwerke in RAID1 gleichzeitig ausfallen.
Systemlaufwerk
Brauchen wir ein separates Laufwerk für das Betriebssystem? In der günstigsten Konfiguration - nein, es reicht aus, OS und Datenbank auf demselben Laufwerk zu halten. Es wird den Verschleiß der SSD leicht beschleunigen, aber nicht so sehr - in unserem Szenario sollte es definitiv 3 Jahre durchhalten.
CPU
Für einen Firebird-Datenbankserver ist es besser, eine CPU mit vielen Kernen und einer möglichst niedrigen Frequenz zu wählen. Ja, Sie haben richtig gelesen - es besteht keine Notwendigkeit für Hochfrequenz-CPUs für einen Datenbankserver. Firebird (wenn es richtig konfiguriert ist) nutzt alle Kerne für die normale Arbeit, belastet sie aber nicht zu 100%.
Es gibt Ausnahmen: einige Wartungsoperationen (Backup und Restore), die von einer schnellen CPU profitieren, und schlecht geschriebene SQL-Abfragen mit falscher Verwendung von Indizes - sie verbrauchen 100% des Kerns, aber das ist ein klares Zeichen, dass eine Optimierung der Datenbankleistung erforderlich ist. Im Allgemeinen ist es nicht möglich, langsame Abfragen mit High-End-CPUs zu kompensieren: Selbst wenn die CPU 3x schneller ist, wird die langsame Abfrage immer noch langsam sein.
Andererseits kann das Vorhandensein mehrerer Kerne die Existenz solcher CPU-intensiven Abfragen kompensieren: Bei weniger als 25 Benutzern und 8 Kernen ist die Wahrscheinlichkeit nicht so groß, dass alle Kerne gleichzeitig von langsamen Abfragen belegt werden.
Und da wir nach der billigen Lösung suchen, sind wir auf Desktop-CPUs beschränkt - und, leider muss ich es sagen, auf AMD-Chips. Im Wesentlichen, wenn Intel einen Desktop-Prozessor mit 8 Kernen zum gleichen Preis oder etwas höher als AMD FX-8320E liefern könnte, könnten wir auch Intel verwenden, aber im Moment sehe ich diese Option nicht.
Dieser AMD-Chip ist nicht so modern und nicht so schnell, aber er hat 8 Kerne und ist billig, also ist er die optimale Wahl für unseren schnellen und billigen Server.
Amazon-Preis ist USD$108
Risiken im Zusammenhang mit Desktop-CPU
Was ist das potenzielle Risiko im Zusammenhang mit der CPU? Bei Niedrigfrequenz-Chips (d. h. nicht übertaktet) mit angemessenem Kühler gibt es fast kein Risiko. Wann haben Sie das letzte Mal von einem ausgefallenen Desktop-CPU gehört - 2003? Natürlich sind Server-CPUs viel schneller, aber wir suchen nach einer gut genugen Lösung.
Es ist eine gute Idee, CPU-Last und Temperatur zu überwachen, um gelegentliche Neustarts zu verhindern.
RAM
Die benötigte Menge an RAM hängt von der Datenbankgröße und der Anzahl der Benutzer ab. In unserem Szenario beträgt die Datenbankgröße 50 GB und wir haben maximal 30 Benutzer.
Die maximale Größe, die Firebird verbrauchen kann, ist die Datenbankgröße (in diesem Fall wird sie vollständig im RAM gecacht) plus 200-300 MB pro Benutzer (im Fall von Firebird 2.5 SuperClassic). Das ideale maximale RAM ist also 64 GB, aber da wir sparen wollen und eine schnelle SSD haben, können wir so wenig wie 16 GB verwenden.
Einige Benutzer in einem solchen Szenario arbeiten auch mit 8 GB gut, aber 8 GB ist ziemlich knapp: In diesem Fall sollte keine andere Anwendung auf demselben Server verwendet werden. 16 GB ist das empfohlene minimale Optimum.
Amazon-Preis ist USD$59,99 x 2 = $120
Risiken im Zusammenhang mit RAM
RAM ist anfälliger für Ausfälle als CPUs, aber weniger als Festplatten. Enterprise-Grade-RAM hat spezielle Mechanismen, um die Möglichkeit von Fehlern zu reduzieren, wie Paritätsprüfungen. Wie können wir das Risiko von Speicherfehlern einschätzen und verringern?
Erstens gibt es Methoden, um Speicherchips zu überprüfen, und wenn solche Tests erfolgreich bestanden wurden, werden RAM-Chips viele Jahre funktionieren. Zweitens, wenn RAM ausfällt, ist es in der Regel sehr auffällig: Der Computer hat entweder einen Blue Screen of Death oder einen Kernel-Panic oder häufige Neustarts: Alle solche Symptome erfordern eine Überprüfung und, im Falle schlechter Ergebnisse, den Austausch des RAM.
Motherboard
Das Motherboard ist ein wichtiger Teil jedes Computers. Glücklicherweise sind moderne Motherboards für Desktops sehr zuverlässig, besonders Motherboards, die vor 4-5 Jahren veröffentlicht wurden - sie haben alle notwendigen Updates und sind stabil. Und - ja, sie sind billig.
Wir brauchen ein Motherboard mit RAID-Unterstützung, mit eingebettetem Video-Chip und mit genügend SATA-Anschlüssen. So etwas wie das:
ASUS M5A78L-M Plus/USB3 DDR3 HDMI DVI USB 3.0 760G MicroATX Motherboard
Amazon-Preis ist USD$74,99
Es hat sehr positive Bewertungen und ist leicht für RAID1 zu konfigurieren.
Desktop-Gehäuse
Wir brauchen ein Desktop-Gehäuse, um alle Computerkomponenten zusammenzustecken, mit ausreichend Netzteil. So etwas wie dieses: $76,82 http://amzn.to/2ydeYs1
USV
Das eine, was nicht Teil des Servers ist, aber mit jedem Computer mit wichtigen Daten ausgestattet sein sollte - unterbrechungsfreie Stromversorgung (USV).
USV schützt einen Computer vor Stromausfällen und Schwankungen. In unserer Erfahrung ist Stromstoß oder abnormaler Stromverlust des Computers die Hauptquelle für Datenbankkorruptionen.
So etwas wie CyberPower CP1200AVR, für $117,97, sollte gut genug sein.
Gesamt
Als Ergebnis haben wir den Gesamtpreis aller Computerkomponenten und der USV = USD 855,27 - das ist sogar weniger als USD 1000, jedoch müssen diese Komponenten, bevor sie zu einem funktionierenden Computer werden, zusammengebaut, mit einem Betriebssystem ausgestattet und getestet werden.
| Artikel | Preis | Menge | Gesamt |
|---|---|---|---|
| SSD Samsung 850 Pro 256 Gb MZ-7KE256BW | $124,24 | 2 | 248,48 |
| Seagate SkyHawk 2TB Surveillance Hard Drive | 74,99 | 2 | 149,98 |
| CPU AMD FX-8320E | $86,02 | 1 | 86,02 |
| RAM Corsair Vengeance 8GB | $61,99 | 2 | 123,98 |
| Motherboard ASUS M5A78L-M Plus | $57 | 1 | 57 |
| Desktop-Gehäuse | $69,99 | 1 | 69,99 |
| CyberPower CP1200AVR | $119.82 | 1 | 119,82 |
| Gesamt | 855,27 |
Zusammenbau des Servers
Um alle diese Teile zu einem funktionierenden Server zusammenzubauen und dort ein Betriebssystem zu installieren (wir würden eine Linux-Variante empfehlen, wie CentOS7+ oder Ubuntu Server 16+), müssen alle diese Komponenten zusammengebaut bzw. korrekt angeschlossen werden.
Das ist nicht schwierig, erfordert nur einen Schraubendreher, etwas Geduld und Zeit, um die Anleitungen sorgfältig zu lesen und sich einige YouTube-Videos anzusehen. Vor 10 Jahren konnte fast jeder Entwickler einen Computer aus diesen Teilen zusammenbauen, heute ist das anders, aber immer noch nicht schwierig.
Was, wenn Sie den Server nicht selbst zusammenbauen möchten?
Es gibt eine Abkürzung - es ist möglich, einen Computer mit einer ähnlichen Konfiguration zu kaufen, der unseren Anforderungen fast entspricht, und dort zusätzliche Komponenten (z. B. Festplatten) einzubauen.
Ich würde empfehlen, sich diesen Computer anzusehen - ursprünglich als Gaming-PC konzipiert, hat er eine 8-Kern-CPU und 16 GB RAM und kostet nur USD$709.
Es wird notwendig sein, ihn auszustatten (Gehäuse öffnen und einstecken) mit einem Paar SSD-Laufwerken (+$248,48), einem weiteren Backup-Laufwerk (+$74,99) und natürlich einer USV (+119.82). Die Gesamtsumme wird USD 1153 betragen - das ist höher als das Ziel von $1000, hauptsächlich aufgrund der Grafikkarte und des schönen Desktop-Gehäuses. Sie müssen weiterhin RAID1 (im BIOS) konfigurieren und natürlich dort ein Server-Betriebssystem anstelle des vorinstallierten Windows 10 Home installieren.
Dieser Ansatz kann verwendet werden, um einen leistungsstarken Desktop-Computer in einen Server zu verwandeln - fügen Sie einfach redundante SSDs und Backup-Laufwerke hinzu.
In der Vergangenheit haben viele KMU und Startups solche selbstgebauten Server verwendet, heute gibt es einen Trend zu cloudbasierten virtuellen Maschinen.
Wie schneiden virtuelle Maschinen im Vergleich zu einem selbstgebauten Server ab?
Natürlich erfordert der Aufbau und die Wartung eines eigenen Servers einige Fähigkeiten (nicht so hohe, wie es scheinen mag), daher möchten viele Unternehmen alle Hardware-Server loswerden (und möglicherweise den für Server verantwortlichen Systemadministrator entlassen).
Im nächsten Artikel werden wir eine VM in der Cloud als Datenbankserver für KMU betrachten.
Weitere Artikel zur Firebird-Datenbankleistung:
- Firebird Hardware Guide
- Tuning 1.7Tb Firebird database
- Firebird Performance Optimization Service
- 45 Ways To Speed Up Firebird database
- Collection of optimized Firebird configuration files
Kontaktieren Sie uns
Bitte zögern Sie nicht, Fragen zu stellen: [email protected].
Danksagung
Vielen Dank an die Personen, die Vorschläge und Verbesserungen für diesen Artikel gesendet haben:
- Vlad Khorsun
- Dmitri Kuzmenko
- Pavel Zotov
- Sergey Nikitin
- Emil Mustea