Der Produktionsserver verfügt über 16 GB RAM und ein 32-Bit-Betriebssystem. Durch 64-Bit-Betriebssystem ersetzen?

7

Ich habe einen Produktionsserver mit 16 GB RAM, der mit einer 32-Bit-CentOS-Installation geliefert wurde.

Die auf diesem Server gehostete Website erhält täglich mehr Verkehr, was zu einigen Leistungsproblemen bei MySQL geführt hat. Ich lief mysqltuner.plund bekam die folgenden Nachrichten:

[!!] Switch to 64-bit OS - MySQL cannot currently use all of your RAM
  *** MySQL's maximum memory usage is dangerously high ***
  *** Add RAM before increasing MySQL buffer variables ***

Kann ich mit dem 32-Bit-Betriebssystem überleben oder muss ich die 64-Bit-Version installieren?

Alexandru Trandafir Catalin
quelle
12
Ich bin mir ziemlich sicher, dass die riesige Warnung von MySQL diese Frage bereits für Sie beantwortet hat. Es gibt so gut wie keinen guten Grund, ein 32-Bit-Server-Betriebssystem auf Hardware zu verwenden, die in den letzten fünf Jahren veröffentlicht wurde.
Jgoldschrafe
2
In letzter Zeit gibt es auf dieser Seite einige tollwütige Abstimmungen.
Soße Gesicht
3
Die Warnung ist falsch. MySQL kann Ihren gesamten Arbeitsspeicher verwenden, es kann ihn jedoch nicht zuordnen, wodurch die Verwendung großer RAM-Mengen viel weniger effizient ist als bei einem 64-Bit-Betriebssystem.
David Schwartz
6
@gravyface Einige tollwütige Upvoting auch. 4 positive Stimmen zu einer Frage, ob es eine gute Idee ist, ein 64-Bit-Betriebssystem zu verwenden, vorausgesetzt:> 4 GB RAM und eine App-Warnung mit der Aufschrift "Wechsel zu 64-Bit-Betriebssystem" erscheinen mir ziemlich übertrieben. Ich denke, ich werde mich dafür entscheiden zu glauben, dass meine "angeborene Überlegenheit" es für mich wie eine triviale Frage erscheinen lässt.
HopelessN00b
8
Warum der Server überhaupt nicht mit 64 Bit ausgestattet war, ist mir ein großes Anliegen ...
tombull89

Antworten:

24

Mit der 32-Bit-CentOS-Installation können Sie gut überleben. Wie in der Warnung angegeben, bedeutet die Verwendung eines 32-Bit-Betriebssystems, dass MySQL nicht den gesamten (oder sogar den größten Teil) des im System installierten Arbeitsspeichers verwenden kann.

Scheint mir eine Verschwendung zu sein. Wenn die Hardware 64-Bit unterstützt, würde ich das 32-Bit-Betriebssystem sicherlich durch ein 64-Bit-Betriebssystem ersetzen, ja. Sie möchten wahrscheinlich zuerst einige Tests durchführen und / oder einen zweiten Server verwenden, um herauszufinden, was beim Wechseln des Betriebssystems nicht funktioniert, da immer etwas funktioniert.

Streng genommen, die Sie nicht brauchen ein 64 - Bit - Betriebssystem zu installieren, aber Sie sollten auf jeden Fall. Und wahrscheinlich eher früher als später, bevor die RAM-Einschränkungen eines 32-Bit-Betriebssystems Probleme verursachen.

HopelessN00b
quelle
1
Wir sollten erwähnen, dass dieses Limit für jeden einzelnen Prozess zählt. Wenn jedoch MySQL die Hauptaufgabe dieses Computers ist, lohnt es sich, einen einzelnen Prozess (mit mehreren Threads) mit 64 Bit auszuführen.
ZaphodB
13

Der maximale virtuelle Adressraum einer 32-Bit-Binärdatei beträgt 2 ^ 32 (4 GB). Sobald Sie diese Grenze erreicht haben, gehen Sie nirgendwo hin.

Sollten Sie auf 64-Bit umsteigen? Absolut.

Sie stoßen nicht nur nicht mehr auf die Speicherbarriere, der generische 64-Bit-Befehlssatz bietet im Allgemeinen eine bessere Leistung als der generische 32-Bit-Befehlssatz (aufgrund des Alters von x86). Wenn Sie also auf x64 umschalten, erhalten Sie sowohl Speicher als auch Speicher und Rechengeschwindigkeit.

Wenn Sie x86-Binärdateien selbst mit dem Arch-Ziel Ihrer exakten CPU selbst kompiliert haben, können Sie natürlich feststellen, dass die Leistung im Vergleich zu x64 nicht allzu unterschiedlich ist, da Sie vorgefertigte CentOS-Binärdateien verwenden Fall.

Olipro
quelle
5
@ HopelessN00b Ja, mit PAE kann der Kernel alle 16 GB RAM adressieren, aber ein bestimmter Prozess ist immer noch auf etwas weniger als 4 GB beschränkt.
Michael Hampton
4
IIRC Sie können PAE auch auf Anwendungsebene implementieren. und dass es früher bei DBs und anderen speicherhungrigen Server-Apps ziemlich häufig war, bevor x86-64-Hardware üblich war. Damit werden jedoch allgegenwärtige PAE-Code-Zweige aufgrund mangelnder Nutzung, die ausreicht, um die weitere Entwicklungsarbeit zu rechtfertigen, verworfen / aufgegeben.
Dan spielt
1
"... generischer 64-Bit-Befehlssatz hat im Allgemeinen eine bessere Leistung als generischer 32-Bit-Befehlssatz (aufgrund des Alters von x86)" - Dies ist eine zweifelhafte Aussage. Zwar ist 64-Bit- Code im Allgemeinen schneller als 32-Bit- Code (aus verschiedenen Gründen, einschließlich Registergröße, Speicherbandbreite und besserer Optimierung), doch hat der Leistungsunterschied nichts damit zu tun, wie lange x86 existiert. Tatsächlich ist x86_64 eine Erweiterung von x86 und es könnte daher argumentiert werden, dass sich die Geschichte des Befehlssatzes bis 1986 erstreckt. :-)
Justin 2
Justin: Nein. Alle x86_64-Prozessoren verfügen garantiert über bestimmte x86-Erweiterungen SSE, SSE2 und mehrere andere, sodass der Compiler einen wesentlich größeren Befehlssatz verwenden kann, wenn er auf die generische x86_64-Architektur im Vergleich zu generischem i (3 | 4 | 5 | 6) 86
Olipro abzielt
3

Obwohl die Antwort akzeptiert wurde, fehlen in der Diskussion hier viele Dinge.

Erstens: Alexandru erwähnt nicht, welche Datenbankmodule auf diesem Computer ausgeführt werden, ob es sich um einen dedizierten DBMS-Server handelt oder ob auch andere Dinge ausgeführt werden, wie groß die Daten sind oder welche Statistiken zur physischen E / A / VFS-Nutzung vorliegen.

Bei einem dedizierten MyISAM-basierten Server werden Sie nicht viel davon profitieren, wenn Sie mehr Speicher adressierbar machen. VFS kann die E / A so gut zwischenspeichern wie MySQL. OTOH, wenn es innodb wäre - dann von golly, ja: Der innodb-Pufferpool auf einer dedizierten Box sollte ungefähr 80% des physischen Speichers auf einem dedizierten Computer ausmachen.

Unabhängig davon, welches DBMS verwendet wird, hat das Umschalten auf 64-Bit einen erheblichen Leistungsvorteil, wenn Vergleichsvorgänge auf dem DBMS ausgeführt werden. Wie viel davon abhängt, ob Sie viele Hash- oder B-Tree-basierte Suchvorgänge durchführen.

Wenn dieselbe Box für das Webserving verwendet wird, besteht der große Unterschied darin, dass Sie viel SSL auf der Box verwenden - bei SSL dreht sich alles um die Berechnung großer Zahlen -, und selbst ohne die AES-Beschleunigung in den neuesten Intel-Chips gibt es eine Verbesserung da auch.

symcbean
quelle
Ich bediene eine Immobilien-Website, die Sie hier unter bit.ly/fwTEsT sehen können , sodass der Server alle möglichen Dinge tut. Datenbank, Serving-Website, Größenänderung von Bildern, Cron-Jobs, Versenden von Mails und so weiter. Ich habe mich endlich entschlossen, diese Situation zu nutzen und das Hosting auf einen dedizierten Server in demselben Land zu ändern, in dem sich das Unternehmen befindet. Auf diesem Server ist das 64-Bit-Betriebssystem bereits installiert.
Alexandru Trandafir Catalin