Lösung 1:
Das ist vollkommen normal.
Beim Systemstart wird eine Reihe von Diensten gestartet. Diese Dienste initialisieren sich selbst, lesen Konfigurationsdateien ein, erstellen Datenstrukturen und so weiter. Sie verwenden etwas Speicher. Viele dieser Dienste werden für die gesamte Zeit, in der das System aktiv ist, nie wieder ausgeführt, da Sie sie nicht verwenden. Einige von ihnen können Stunden, Tage oder Wochen dauern. All diese Daten befinden sich jedoch im physischen Speicher.
Natürlich kann das System diese Daten nicht wegwerfen. Es kann nicht beweisen, dass buchstäblich nie darauf zugegriffen wird. Einer dieser Dienste könnte beispielsweise derjenige sein, der Ihnen den Fernzugriff auf die Box ermöglicht. Sie haben es vielleicht eine Woche lang nicht benutzt, aber wenn Sie es benutzen, hat es besser funktioniert.
Das System weiß jedoch, dass es diesen physischen Speicher möglicherweise für Dinge wie einen Festplatten-Cache oder auf andere Weise verwenden möchte, um die Leistung zu verbessern. Es wird also opportunistisch getauscht. Wenn es nichts Besseres zu tun hat, schreibt es Daten, die seit sehr langer Zeit nicht mehr verwendet wurden, auf die Festplatte, indem es Auslagerungsspeicher verwendet. Die Seiten bleiben jedoch weiterhin im physischen Speicher. Sie sind also weiterhin ohne Austausch zugänglich.
Wenn das System diesen physischen Speicher später für etwas anderes benötigt, kann es diese Seiten einfach wegwerfen, da es sie bereits zum Austauschen geschrieben hat. Dadurch erhält das System das Beste aus beiden Welten. Die Daten werden weiterhin im Speicher gehalten, sodass auf sie zugegriffen werden kann, ohne sie von der Festplatte lesen zu müssen. Aber wenn das System diesen Speicher für einen anderen Zweck benötigt, muss es ihn nicht zuerst ausschreiben. Rundum ein großer Gewinn.
Lösung 2:
Dies kann passieren, wenn Sie irgendwann in der Vergangenheit mehr Arbeitsspeicher benötigt haben, als physischer Arbeitsspeicher auf dem Computer vorhanden ist. Zu diesem Zeitpunkt werden einige Daten in den Auslagerungsbereich geschrieben worden sein.
Wenn später Speicher freigegeben wird, werden Daten aus dem Swap nicht automatisch in den RAM zurückgelesen:Dies geschieht nur, wenn die Daten im Swap tatsächlich von einem Prozess benötigt werden. Das ist vollkommen normal.
Was Ihren MySQL-Prozess betrifft:Dies hängt alles von der Art der Abfragen ab, die Sie ausführen. Theoretisch könnten wahrscheinlich 2 sehr komplexe Abfragen ausreichen, um eine solche Last zu erhalten, unabhängig von Ihrer Anzahl von Benutzern. Sie können das Protokoll für langsame Abfragen aktivieren, um mehr Einblick darin zu erhalten, welche Abfragen belastungsintensiv sind.
Lösung 3:
Sie können dieses Verhalten auch durch sysctl -w vm.swappiness=10
ändern , wodurch die Verwendung von Swap stark reduziert wird, bis es tatsächlich benötigt wird.
Was MySQL betrifft, haben Sie zumindest einen Grundkonfigurationstest mit dem tuning-primer.sh-Skript durchgeführt?