Ich habe einen Entwickler-Server, auf dem sshd
manchmal nicht mehr funktioniert, weil der Computer keinen RAM mehr hat. Ja, der Arbeitsspeicher geht zur Neige, und ein Upgrade ist derzeit nicht möglich. Ich möchte dem Computer sagen: "Tun Sie, was immer Sie wollen, aber lassen Sie 20 MB und etwas CPU weg sshd
!".
Wie geht das?
performance
limit
phunehehe
quelle
quelle
sshd
es sich gut verhält, würde es wohl hängen bleiben, wenn nicht genügend CPU / RAM zur Verfügung stünde, oder?Antworten:
Sie können wahrscheinlich so etwas erreichen, indem Sie cgroups mit dem Memory Resource Controller verwenden .
Ich vermute, Sie würden alle Ihre ressourcenintensiven Aufgaben in eine begrenzte (CPU & RAM)
cgroup
undsshd
"außerhalb" lassen, damit es nicht eingeschränkt wird.(Das Hinzufügen weiterer Auslagerungsdateien, auch in Form einer Auslagerungsdatei, kann jedoch eine gute Option sein.)
quelle
Oh, aber cgroups sind einfach :) Installieren Sie das libcgroup-Paket. Erstellen Sie eine /etc/cgconfig.conf:
Starten Sie den
cgconfig
Prozess, der die Hierarchie und die Gruppen erstellt, und legen Sie die Grenzen fest. Wenn dies gelingt, verfügen Sie über zwei Gruppen, denen jeweils 50% der CPU zugewiesen sind, und 1 GB Arbeitsspeicher (Sie wissen nicht, wie viel Arbeitsspeicher tatsächlich zur Verfügung steht; in diesem Beispiel sind es 2 GB). Jetzt müssen Sie nur noch alle Aufgaben (dh alle auf dem System laufenden Prozesse) aus der Stammgruppe in die nosshd cgroup verschieben:Dann müssen Sie nur noch die PID des
sshd
Prozesses abrufen und diese in die sshd-Aufgabendatei verschieben:Ta-da, du bist fertig. Sie können jetzt sicher sein, dass sshd immer über 50% der CPU und 1 GB Arbeitsspeicher verfügt.
quelle
Verwenden Sie
renice
diese Option , um eine höhere Priorität fürsshd
die Buchhaltung zu erhalten oder die Buchhaltung zu überprüfen. (acct) -> hiermit kannst du ressourcen für benutzer einstellen, also starte sshd mit squelle
ionice
und wahrscheinlich sshd damit beginnen, es später nicht wieder aufzugeben.Eine allgemeinere Lösung für das Problem der Nutzung von Anwendungsressourcen besteht darin, Ihre Anwendungen mit Docker in einem Container auszuführen . Sie können dann Container mit CPU- und Speicherbeschränkungen ausführen, die denen von cgroups ähneln.
quelle