Hinweis: Dies begann als "How to Debug" -Tutorial, war jedoch die Lösung, die mir auf einem Ubuntu 16.04 LTS-Server geholfen hat .
TLDR : Führen landscape-sysinfo
Sie den Befehl aus, und überprüfen Sie, ob das Beenden dieses Befehls lange dauert. Dies ist der Ausdruck der Systeminformationen bei einem neuen SSH-Login. Beachten Sie, dass dieser Befehl nicht auf allen Systemen verfügbar ist. Das landscape-common
Paket installiert ihn. ("Aber warte, es gibt noch mehr ...")
Starten Sie einen zweiten SSH-Server an einem anderen Port auf dem Computer, an dem das Problem auftritt. Führen Sie dazu den Debug-Modus aus, der nicht zum Verzweigen führt, und drucken Sie die Debug-Meldungen aus:
sudo /usr/sbin/sshd -ddd -p 44321
Stellen Sie von einem anderen Computer im ausführlichen Modus eine Verbindung zu diesem Server her:
ssh -vvv -p 44321 username@server
Mein Client gibt die folgenden Zeilen unmittelbar vor dem Einschlafen aus:
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 bemerkt , dass , wenn ich ändern , UsePAM yes
um UsePAM no
dann dieses Problem behoben ist.
Keine Beziehung zu UseDNS
oder eine andere Einstellung UsePAM
betrifft nur dieses Problem auf meinem System.
Ich habe keine Ahnung , warum, und ich bin auch nicht verlassen UsePAM
auf no
, weil ich nicht weiß , was die Nebenwirkungen sind, aber dies läßt mich weiter zu untersuchen.
Betrachten Sie dies also nicht als Antwort, sondern als ersten Schritt, um herauszufinden, was nicht stimmt.
Also recherchierte ich weiter und rannte sshd
mit strace
( sudo strace /usr/sbin/sshd -ddd -p 44321
). Dies ergab folgendes:
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 Leitung /etc/update-motd.d
machte mich misstrauisch, anscheinend wartet der Prozess auf das Ergebnis des Materials, das in ist/etc/update-motd.d
Also ich cd
‚d in /etc/update-motd.d
und lief ein , sudo chmod -x *
um PAM zu hemmen , um alle Dateien zu laufen , die diese Dynamik zu erzeugen Message Of The Day
, die Systemlast enthält und wenn Pakete aktualisiert werden müssen, und das Problem dadurch gelöst.
Dies ist ein Server, der auf einer "energieeffizienten" N3150-CPU basiert, die rund um die Uhr viel zu tun hat. Ich denke, dass das Sammeln all dieser Motd-Daten einfach zu viel war.
Ich kann damit beginnen, Skripte in diesem Ordner selektiv zu aktivieren, um festzustellen, welche weniger schädlich sind, aber speziell das Aufrufen landscape-sysinfo
ist sehr langsam und 50-landscape-sysinfo
ruft diesen Befehl auf. Ich denke, das ist derjenige, der die größte Verzögerung verursacht.
Nach Neuaktivieren die meisten Dateien kam ich zu dem Schluss , dass
50-landscape-sysinfo
und 99-esm
die Ursache für meine Sorgen waren. 50-landscape-sysinfo
Die Ausführung dauerte ca. 5 Sekunden und 99-esm
ca. 3 Sekunden. Alle restlichen Dateien ca. 2 Sekunden zusammen.
Weder noch 50-landscape-sysinfo
und 99-esm
sind entscheidend. 50-landscape-sysinfo
druckt interessante Systemstatistiken aus (und auch, wenn Sie wenig Platz haben!) und 99-esm
druckt Nachrichten aus, die sich auf Folgendes beziehenUbuntu Extended Security Maintenance
Schließlich können Sie mit ein Skript erstellen echo '/usr/bin/landscape-sysinfo' > info.sh && chmod +x info.sh
und diesen Ausdruck auf Anfrage erhalten.