Mein aktueller Server hat 12 Kerne und 96 GB RAM. Aber aufgrund meiner MySQL-Abfragen sind bis zu 100 % des Servers immer ausgelastet, während der RAM weniger als 5 % beträgt. Ich weiß, dass das Hauptproblem bei den SQL-Abfragen liegt. Aus den Protokollen ging hervor, dass es sich bei einigen Abfragen um Werte in allen Spalten handelte. Aufgrund der Größe der Anwendung ist eine Optimierung der Abfragen kurzfristig nicht möglich.
Sollte ich mir als kurzfristige Lösung einen neuen Server mit 32 Kernen zulegen? Oder gibt es eine Möglichkeit, einen Teil der Rechenleistung in den Arbeitsspeicher des Servers zu verlagern? Auf diese Weise werden nicht einfach über 90 GB Arbeitsspeicher verschwendet.
Antwort1
NEIN.
Ich habe noch nie einen MySQL-Server gesehen, dem die Kerne ausgegangen sind, bevor ihm die anderen Ressourcen ausgegangen sind.
Eine hohe CPU-Auslastung lässt sich häufig durch das Hinzufügen eines besseren Indexes (insbesondere eines zusammengesetzten Indexes) und/oder die Neuformulierung einiger langsamer Abfragen beheben.
Finden Sie die langsamen Abfragen und lassen Sie uns darüber diskutieren. SlowLog
„Geringe RAM-Nutzung“ bedeutet normalerweise einen zu niedrigen Wert innodb_buffer_pool_size
. Diese Einstellung sollte bei etwa 70 % des RAM liegen. Eine niedrige Einstellung bedeutet jedoch normalerweise eine hohe I/O, nicht eine hohe CPU-Auslastung. Bitte zeigen Sie uns SHOW CREATE TABLE
und SELECT...
für einige unartige Anfragen.