Normalerweise wird nach dem SSH-Vorgang auf einem Server (oder dem Öffnen eines Terminals auf meinem Mac) das Anmeldebanner sofort gedruckt. Es dauert jedoch ca. 10 Sekunden bis eine Minute, bis die Shell-Eingabeaufforderung angezeigt wird. Danach ist die Leistung in Ordnung und die Netzwerklatenz ist nicht ungewöhnlich.
Dies scheint keine rechenintensive, speicherintensive oder IO-lastige Aufgabe zu sein. Was macht es mit all den Milliarden von CPU-Zyklen?
ssh
performance
shell
jacobbaer
quelle
quelle
ssh -v -v -v
undur_shell -x
möglicherweise umsichtige Schritte zum Debuggen..bash_history
?Antworten:
Hier könnte einiges passieren. Sie finden die meisten Antworten in Ihrem Shell-Handbuch, aber diese sind normalerweise unglaublich lang und schräg, also ...
Die Chancen stehen gut, dass Ihr Problem auf einige Dinge zurückzuführen ist.
Wenn Ihr Profil oder Ihre Website teure Dinge enthält, sollten Sie sie zurückschneiden.
Wenn Ihr Profil oder bashrc eine umgekehrte DNS-Suche verwendet (um die Eingabeaufforderung oder etwas anderes festzulegen), korrigieren Sie DNS oder verwenden Sie stattdessen den Hostnamen.
Shells öffnen beim Initialisieren unter anderem viele Dateien. Wenn die Systemlast hoch ist, wird sie hier häufig angezeigt.
Wenn es sich bei dem Banner um eine Vorauthentifizierung handelt, ist möglicherweise auch die Authentifizierung (Pam, LDAP usw.) langsam.
Es könnte jedoch keines dieser Dinge sein. Unmittelbar vor der Anzeige der Eingabeaufforderung passiert überraschend viel!
quelle
Wahrscheinlich wird entweder auf DNS gewartet oder versucht, sich über LDAP oder dergleichen zu authentifizieren.
Versuchen Sie
UseDNS no
, / etc / ssh / sshd_config hinzuzufügenWenn dies auch bei lokalen Anmeldungen der Fall ist, überprüfen Sie, ob von Ihnen konfigurierte LDAP-Server oder DNS-Server langsam sind oder nicht reagieren.
quelle
Eine Möglichkeit (die von anderen Antworten abgedeckt wird) besteht darin, dass beim Einrichten der SSH-Sitzung selbst die Zeit verloren geht.
Eine andere Alternative besteht darin, dass Ihre Shell-Startskripten, die nach dem Aufbau einer SSH-Sitzung auf dem Remotecomputer ausgeführt werden, etwas haben, das lange dauert (möglicherweise wird versucht, auf eine unterbrochene Netzwerkbereitstellung zuzugreifen). Sie können diese zweite Möglichkeit folgendermaßen debuggen:
Fügen Sie vorübergehend Folgendes oben hinzu
~/.bash_profile
:Die
set -x
Drehungen auf einige Debugging für jede Shell - Befehl ausgeführt. DiePS4
Variable steuert, wie das Debugging dargestellt wird - speziell in diesem Falldate
werden Zeitstempel hinzugefügt.Anschließend können Sie die Zeitstempel der Debugging-Ausgabe analysieren, um festzustellen, welche Befehle in Ihren Startskripten zu lange dauern.
quelle
Wenn es sich um einen Ubuntu-Server handelt, prüft das Standard-Login-Setup bei jeder Ausführung einer Login-Shell, ob Pakete aktualisierbar sind. Wenn sich die Paketlisten nicht im Festplatten-Cache befinden, kann dies auf einem schnellen, inaktiven Desktop einige Sekunden dauern.
Um diese Meldung "Neustart erforderlich" zu generieren, musste überprüft werden, ob der aktuell ausgeführte Kernel nicht der aktuell installierte Standardkernel ist. (Das heißt, es gab einen Kernel, den ich noch nicht neu gestartet habe.) Außerdem wird eine Anzahl der verfügbaren Sicherheitsupdates gedruckt, sofern vorhanden.
Ich denke, dies ist die größte Verlangsamung bei der Anmeldung bei Ubuntu, die kürzlich eingeführt wurde.
Wenn nicht, dann könnte Ihr
~/.bash_profile
/~/.bashrc
das Problem sein.Haben Sie versucht, sich von selbst beim Server anzumelden (
ssh localhost
)? Oder gleich ein 2. Mal einloggen? (Um zu sehen, ob es viel schneller ist, wenn Sachen zwischengespeichert werden.)quelle
Dies ist in den meisten Fällen eine Zeitüberschreitung einer DNS-Anforderung.
Ursache: Der Server versucht eine umgekehrte DNS-Suche unter Verwendung der IP-Adresse des Clients und erhält keine Antwort. Wenn A eine Verbindung zu B herstellt, versucht B, die IP-Adresse von A in einen Namen zu konvertieren.
Umgehung: Geben Sie die IP-Adresse und den Namen des Clients in die Hosts-Datei des Servers ein.
Lösung: Machen Sie alle Hosts dem DNS-Server bekannt.
quelle