Wie kann ich den vom MySQL-Server verwendeten physischen und virtuellen Speicher freigeben?

Wie kann ich den vom MySQL-Server verwendeten physischen und virtuellen Speicher freigeben?

Auf meinem CentOS 6.5 werden mehrere PHP-Skripte über Crontab ausgeführt, jedes PHP-Skript enthält mindestens eine Datenbankabfrage. Abhängig von der Größe und dem Typ des PHP-Objekts wird in bestimmten Fällen vom MySQLD-Dienst zu viel physischer Speicher zugewiesen.

Manchmal sind von 1,7 GB Speicher nur 15 MB frei, der Swap-Speicher ist vielleicht auch zu 95 % belegt. Um den Serverspeicher freizugeben, besteht die einzige alternative Lösung darin, den MySQL-Server neu zu starten, aber nach ein paar Tagen ist der Speicher fast wieder voll.

Um den Neustart von mysqld zu ignorieren, habe ich versucht, den Abfragecache zu leeren RESET QUERY CACHE;, FLUSH QUERY CACHE;aber am Speicherstatus hat sich nichts geändert. Ich habe auch versucht, auszuführen, sync && echo 3 | sudo tee /proc/sys/vm/drop_cachesaber der Speicherstatus ist wieder derselbe.

Wissen Sie, wie Sie beispielsweise nach jeder Skriptausführung den physischen und virtuellen Speicher freigeben können, ohne den MySQL-Server neu zu starten?

Antwort1

Wenn MySQL den gesamten Speicher verbraucht, müssen Sie die Werte verringern oder den Server-RAM erhöhen. Wenn Sie MySQL mitgeteilt haben, dass es 16 GB RAM haben kann, aber nur 8 GB verfügbar sind, dann passieren Dinge.

Sie veranstalten keine Party für 20 Personen in einem durchschnittlichen Hotelzimmer, nur um dann festzustellen, dass das Zimmer zu klein ist, und es am nächsten Abend noch einmal zu versuchen, in der Hoffnung, dass Sie dann 20 Personen unterbringen können. Entweder buchen Sie ein größeres Zimmer oder laden weniger Leute ein.

verwandte Informationen