Lösung 1:
Auf großen Systemen, 8 GB physischem RAM, weisen wir normalerweise 2 GB Swap zu. Dies sind geladene Datenbankserver, auf denen Oracle oder PostgreSQL ausgeführt wird. Seit Jahren habe ich noch nie einen Swap-Hit gesehen, selbst unter starker Belastung. Eine hohe Last liegt bei ungefähr 100 bis 150 Benutzern, die ungefähr 10.000 SQL-Lesevorgänge und vielleicht 2.500 Schreibvorgänge pro Minute ausführen.
Wir passen auch das Swapiness-Level an, um das Swapping zu verhindern, und wir deaktivieren unnötige Prozesse, von denen wir wissen, dass wir sie nicht ausführen müssen. (Benutzerdefinierte Linux-Builds)
Wie Eddie oben sagt, ist 1x physischer RAM eine gute Faustregel für alles unter 4 GB. Ich erstelle benutzerdefinierte Linux-Builds für ein großes Fortune-500-Unternehmen, und das sind die Dinge, die wir normalerweise tun, und wir hatten in den letzten etwa 5 Jahren, in denen ich für sie beraten habe, keine Probleme.
Auf größeren Systemen:64-Bit-Linux mit 32 GB und 64 GB RAM, dies sind unsere Oracle-Datenbankserver, und wir halten normalerweise 2 GB Swap für Dinge bereit, wie Eddie oben erwähnt hat - Leerlaufprozesse werden je nach Swapiness-Einstellungen in den Swap verschoben.
Lösung 2:
Eine scheinbar zeitlose Frage. Die guten Leute bei SlashDot haben das vor einiger Zeit besprochen. Sehen Sie sich an, was sie zu sagen hatten:
- Speicherplatz ist bei modernen HDDs kein Problem, 16 GB sind immer noch eine unbedeutende Größe für moderne TB-Laufwerke.
- Beträchtliche Auslagerungsspeicher können jedoch bei schlechter Speicherverwaltung ein Problem darstellen:
Wenn ich einen 4-GB-Film über einen Zeitraum von 2 Stunden anschaue, werden viele Speichermanager entscheiden, dass der Versuch, alle diese Daten zwischenzuspeichern, eine gute Sache sein könnte. Nach der Hälfte des Films wird er denken, dass all diese anderen laufenden Programme eine Stunde lang nicht verwendet wurden und sicher ausgetauscht werden können, um mehr von dieser 4-GB-Datei zwischenzuspeichern. Das Endergebnis ist, dass die Hälfte Ihrer Programme nach dem Ansehen eines Films ausgelagert wird, was zu einem trägen System führt, das die gesamte Auslagerungsdatei zerstört.
- Am Ende sollte die richtige Entscheidung von Speicheranforderungen kommen, nicht von groben Formeln:
Wenn Sie [genügend RAM haben, um die Programme auszuführen, die Sie täglich verwenden möchten], gibt es keinen Grund, jemals Swap zu verwenden.
Lösung 3:
Siehe die Antwort Wie viel SWAP-Speicherplatz auf einem System mit hohem Arbeitsspeicher? für eine Anleitung, obwohl Ihre Frage allgemeiner ist. Die Meinungen dazu gehen weit auseinander, aber im Allgemeinen scheinen Leute mit 1 GiB RAM oder mehr entweder ganz ohne Swap oder mit 1x Speicher als Swap zu laufen.
Selbst wenn Sie nicht vorhaben, so viel RAM zu verwenden, dass Sie das Austauschen erzwingen, ist es sinnvoll, mindestens 1x Arbeitsspeicher als Austausch zu haben:Es ermöglicht dem Betriebssystem, einige Dinge auszutauschen, von denen nicht erwartet wird, dass sie verwendet werden sofort, sodass er diesen Speicher stattdessen beispielsweise für Festplatten- oder E/A-Puffer verwenden kann.
Lösung 4:
Wenn Sie davon ausgehen, dass Ihr System in den Ruhezustand versetzt und dann erfolgreich fortgesetzt werden kann :-) , ist es wahrscheinlich besser, der Auslagerungspartition mehr Speicherplatz zuzuweisen als die Menge an physischem RAM
Lösung 5:
Mein VPS-Anbieter stellt nicht einmal Auslagerungsspeicher für die Server bereit, und meiner läuft ohne ihn problemlos.
Die meisten Server, die ich täglich bei der Arbeit sehe, sind auch ohne Swaps.
Bearbeiten
Wenn Sie jedoch eine JVM ausführen, stellen Sie sicher sicher Sie haben mindestens so viel Auslagerungsspeicher wie jemals -Xmx
einstellen aufgrund eines bekannten Problems mit der JVM.
Kurz gesagt, wenn die JVM mehr Speicher benötigt, als sie derzeit verwendet (aber immer noch nicht ihre Xmx
erreicht hat ), es:
- tauscht sich selbst auf die Festplatte aus
- weist neuen Speicher zu
- liest sich zurück ins RAM
Das bedeutet, dass wenn Sie tauschen weniger als Ihr Xmx
ist , es kann fehlschlagen.
Um den Fehlerbericht zu zitieren
Am besten erhöhen Sie die Auslagerungsgröße auf den Computern, auf denen dieser Fehler auftritt.
Ich versuche, auf Nummer sicher zu gehen, wenn ich mit JVMs arbeite, und setze Swap auf den gleichen physischen Speicher.