Ich habe eine 8 GB RAM Linux Box, auf der 4 Tomcat Server ausgeführt werden. Eine davon ist auf 3000 MB Speicher eingestellt (Einstellung jvm -Xms und -Xmx), andere auf 1500 MB. Die Swap-Partition ist ebenfalls auf 8Gigs eingestellt. Wenn ich diese Server starte, ist die Auslastung der Auslagerungsdateien gering. Über einen Zeitraum von Tagen und zu bestimmten Zeiten, wenn einer / alle Server in Spitzenaktivität sind, nimmt die Swap-Nutzung jedoch zu. Hier ist eine typische sar-r-Ausgabe.
kbmemfree kbmemused% memused kbbuffers kbcached kbswpfree kbswpused % swpused kbswpcad
48260 8125832 99,41 196440 2761852 7197688 1190912 14,20 316044
75504 8098588 2399460 7197688 198032 99,08 1.190.912 14,20 316.032
Es zeigt einen derzeit verwendeten Swap von 14,2%. Das Lustige ist, dass% NIE abnimmt . Es steigt weiter an und erreicht bis zu 30-40% . Wir starten unsere Server wöchentlich neu.
Ich würde davon ausgehen, dass der prozentuale Anteil der Swpused in Perioden mit Spitzenaktivität zunimmt und in Perioden mit geringer Aktivität abnimmt. Oder zumindest konstant bleibt. Dies sieht so aus, als würde der Swap-Bereich vom Betriebssystem niemals zurückgefordert.
Ausgabe von frei: frei -m insgesamt verwendete frei geteilte Puffer zwischengespeichert Mem: 7982 7937 45 0 32 2088 - / + Puffer / Cache: 5816 2166 Swap: 8191 1163 7028
Es gibt also mindestens 2 g freien Ram. Die Frage ist also, warum der Swap-Bereich weiter zunimmt und vom Betriebssystem nicht zurückgefordert wird. Oder wie man dies debuggt, um herauszufinden, was passiert.
quelle
Grundsätzlich müssen Sie sich nicht darum kümmern. Es ist wichtig zu wissen, wie viel E / A an den Swap geht (siehe Befehl 'vmstat'). Mehr Sachen im Tausch zu haben kostet nichts. Die einzigen Kosten sind das Einlegen von Inhalten in den Tausch (Seite rein) oder das Herausnehmen (Seite raus). Daher ist es für das Betriebssystem durchaus vernünftig, den Swap wachsen zu lassen.
quelle
Solange Sie Swap-Speicherplatz zur Verfügung haben, muss das Betriebssystem keinen Swap-Speicherplatz freigeben. Es wird freigegeben, wenn kein Platz mehr vorhanden ist. Aber wenn Sie in diese Situation geraten, haben Sie definitiv ein Problem.
quelle
Es gibt keine Möglichkeit festzustellen, ob dies irgendwann zu einem Problem wird, es sei denn, Sie führen einen Server lange genug aus, um festzustellen, ob es zu einem Problem wird.
Grundsätzlich tauscht das Betriebssystem Dinge aus, die nicht verwendet werden, um jederzeit Speicherplatz frei zu halten, falls ein neues Programm gestartet wird. Swap-Speicherplatz wird erst freigegeben, wenn er benötigt wird. Dies bedeutet, dass Sie 100% Swap-Speicherplatz verwenden können und keine Leistungsprobleme haben. Sie müssen sich Sorgen machen, wenn dies durch einen Speicherverlust verursacht wird. Es ist nicht unbedingt ein Speicherverlust, könnte es aber sein.
Java ist nicht anfällig für Speicherlecks, kann jedoch insbesondere bei komplizierten Apps auftreten.
quelle