So priorisieren Sie SSH für die Arbeit bei hoher CPU-Auslastung

8

Ich stoße auf ein seltsames Problem, bei dem ein Fedora Linux VPS-Server 100% CPU meldet und effektiv unbrauchbar wird, aber ich weiß nicht warum, weil die hohe Last mich daran hindert, SSH zu verwenden, um zu sehen, was falsch ist.

Wie priorisiere oder konfiguriere ich SSH, damit ich auch dann noch eine Verbindung herstellen kann, wenn ein Prozess die gesamte andere CPU verbraucht?

Cerin
quelle
Ich denke nicht, dass dies wirklich möglich ist. Warum nicht das Problem an der Quelle angreifen? Finden Sie heraus, warum die CPU maximal ausgelastet ist, und beheben Sie DIESES Problem.
Robbie Mckennie
8
Vielleicht, weil er nicht SSH kann, um das Problem anzugreifen. Huhn trifft Ei. :)
Kenchilada
@RobbieMckennie, und wie schlägst du vor, dass ich das mache?
Cerin
Es hört sich so an, als wäre es etwas spät, ssh zur Priorität zu zwingen. Wenn Sie über "physischen" Zugriff verfügen, können Sie möglicherweise einsteigen. Möglicherweise werden Sie gerade ausgeführt ssh user@host sudo reboot, um einen Neustart zu versuchen, mit weniger Aufwand als mit einer vollständigen Shell.
zurückhaltend
@demure, ich habe keinen physischen Zugang. Ich kann es neu starten, aber das zerstört alle Beweise dafür, was das Problem war.
Cerin

Antworten:

2

Wenn es sich tatsächlich um ein CPU- / Lastproblem handelt, können Sie den sshd-Prozess auf Ihrem Server (erneut) aktivieren, um ihm eine höhere Priorität zu geben. Um dies dauerhaft zu machen, können Sie das nice im sshd init-Skript hinzufügen.

Pascal Schmiel
quelle
2

Erstellen Sie ein Skript, das Prozesse protokolliert:

#!/bin/bash
top -b -c -n 1 -d 1 > /tmp/top-$(date "+%Y-%m-%d_%H-%M-%S")

Richten Sie einen Cron-Job ein, der das Skript jede Minute ausführt:

*/1 * * * * /path/to/script.sh

Wenn Ihr System das nächste Mal nicht mehr reagiert, können Sie protokollieren, was es getan hat.

suprjami
quelle
Schreiben Sie für zusätzliche Punkte einen weiteren Cron-Job, der alle paar Tage die alte Protokollierung löscht, damit Sie Ihr Dateisystem nicht füllen. (Hinweis: findund -mtime)
Suprjami
1

Wenn es Ihnen nichts ausmacht, denke ich, dass Sie die falsche Frage stellen. Sie möchten wirklich herausfinden, was verwendet wird, und möglicherweise Ressourcen, bis Sie sich nicht mehr anmelden können. Ich bin mehrfach auf dieses Problem gestoßen, und die Lösung besteht darin, zu verfolgen, was ständig auf dem Server vor sich geht. Ich habe diese Lösung entwickelt, die so leicht wie möglich ist und die Wahrscheinlichkeit verringert, von einem Ressourcenschwein gestoppt zu werden:

http://linuxtech.ie/wordpress/2012/09/05/finding-a-severe-resource-hog-on-your-server/

Ich hoffe das hilft

Philip Kearns
quelle
Das ist wahr. Behandlung des Symptoms, nicht der Ursache. Ich musste NIEMALS Änderungen an der Priorität des SSH-Daemons auf einem Produktionssystem vornehmen. Ich denke, dies liegt eher an den Mängeln des VPS-Anbieters oder einem anderen Ressourcenproblem.
ewwhite
1

Ich habe den Code ausgeführt, der alle Ressourcen über Docker beansprucht, also habe ich nur die Menge an CPU begrenzt, die vom Container verbraucht werden kann, indem ich ihn gestartet habe

--cpus=7.5

Da ich 8 Kerne habe, sollte ich immer einen halben Kern für die Verarbeitung von SSH-Sitzungen auf dem Server haben, auf dem der Container ausgeführt wird (es sei denn, ein anderer Prozess beansprucht diese Ressourcen ebenfalls).

Zum guten Teil habe ich auch die Speichernutzung des Containers mit eingeschränkt

--memory=4g

https://docs.docker.com/config/containers/resource_constraints/#cpu

Boris
quelle