Hinweis: Dies begann als ein “How to debug”-Tutorial, endete aber als die Lösung, die mir auf einem Ubuntu 16.04 LTS-Server half.
TLDR : Führen Sie landscape-sysinfo aus und überprüfen Sie, ob dieser Befehl lange braucht, bis er beendet ist; es ist der Ausdruck der Systeminformationen bei einer neuen SSH-Anmeldung. Beachten Sie, dass dieser Befehl nicht auf allen Systemen verfügbar ist, das Paket landscape-common installiert ihn. (“But wait, there’s more…”)
Starten Sie einen zweiten SSH-Server an einem anderen Port auf dem Rechner, der das Problem hat, tun Sie dies im Debug-Modus, was ihn nicht zum Forken bringt und Debug-Meldungen ausgibt:
sudo /usr/sbin/sshd -ddd -p 44321
Verbinden Sie sich mit diesem Server von einer anderen Maschine im ausführlichen Modus:
ssh -vvv -p 44321 username@server
Mein Client gibt die folgenden Zeilen aus, kurz bevor er zu schlafen beginnt:
debug1: Entering interactive session.
debug1: pledge: network
Googeln ist nicht wirklich hilfreich, aber die Serverprotokolle sind besser:
debug3: mm_send_keystate: Finished sending state [preauth]
debug1: monitor_read_log: child log fd closed
debug1: PAM: establishing credentials
debug3: PAM: opening session
---- Pauses here ----
debug3: PAM: sshpam_store_conv called with 1 messages
User child is on pid 28051
Ich habe festgestellt, dass dieses Problem behoben ist, wenn ich UsePAM yes in UsePAM no ändere.
Hat nichts mit UseDNS oder einer anderen Einstellung zu tun, nur UsePAM betrifft dieses Problem auf meinem System.
Ich habe keine Ahnung, warum, und ich lasse auch UsePAM nicht auf no, weil ich nicht weiß, was die Nebeneffekte sind, aber das lässt mich weiter forschen.
Betrachten Sie dies also bitte nicht als Antwort, sondern als einen ersten Schritt, um herauszufinden, was falsch ist.
Also forschte ich weiter und ließ sshd mit strace (sudo strace /usr/sbin/sshd -ddd -p 44321) laufen. Dies ergab das Folgende:
sendto(4, "<87>Nov 20 20:35:21 sshd[2234]: "..., 110, MSG_NOSIGNAL, NULL, 0) = 110
close(5) = 0
stat("/etc/update-motd.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
umask(022) = 02
rt_sigaction(SIGINT, {SIG_IGN, [], SA_RESTORER, 0x7f15dce784b0}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGQUIT, {SIG_IGN, [], SA_RESTORER, 0x7f15dce784b0}, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
clone(child_stack=0, flags=CLONE_PARENT_SETTID|SIGCHLD, parent_tidptr=0x7ffde6152d2c) = 2385
wait4(2385, # BLOCKS RIGHT HERE, BEFORE THE REST IS PRINTED OUT # [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 2385
Die Zeile /etc/update-motd.d machte mich misstrauisch, anscheinend wartet der Prozess auf das Ergebnis des Zeugs, das in /etc/update-motd.d
steht. Also habe ich cd mit /etc/update-motd.d laufen lassen, um PAM daran zu hindern, alle Dateien auszuführen, die dieses dynamische sudo chmod -x * erzeugen, was auch die Systemlast einschließt und ob Pakete aktualisiert werden müssen, und dies löste das Problem.
Dies ist ein Server, der auf einer “energieeffizienten” N3150-CPU basiert, die rund um die Uhr eine Menge Arbeit zu erledigen hat, so dass ich denke, dass das Sammeln all dieser motd-Daten einfach zu viel für ihn war.
Ich werde vielleicht anfangen, die Skripte in diesem Ordner selektiv zu aktivieren, um zu sehen, welche weniger schädlich sind, aber speziell der Aufruf von Message Of The Day ist sehr langsam, und landscape-sysinfo ruft diesen Befehl auf. Ich denke, das ist derjenige, der die größte Verzögerung verursacht.
Nachdem ich die meisten Dateien wieder aktiviert hatte, kam ich zu dem Schluss, dass50-landscape-sysinfo und 50-landscape-sysinfo die Ursache für meine Probleme waren. 99-esm brauchte etwa 5 Sekunden zur Ausführung und 50-landscape-sysinfo etwa 3 Sekunden. Alle anderen Dateien insgesamt etwa 2 Sekunden.
und 99-esm sind beide nicht entscheidend. 50-landscape-sysinfo gibt interessante Systemstatistiken aus (und auch, wenn Sie wenig Speicherplatz haben!), und 99-esm gibt Meldungen aus, die mit 50-landscape-sysinfo
zusammenhängen. Schließlich können Sie ein Skript mit 99-esm erstellen und diesen Ausdruck auf Anfrage erhalten.