Accesso ssh lento - Timeout attivazione org.freedesktop.login1


39

Su uno dei miei server ho notato davvero un ritardo sugli accessi SSH.

Connessione tramite le opzioni ssh -vvv il ritardo si verifica a debug1: Entering interactive session.

estratto di connessione:

debug1: Authentication succeeded (publickey).
Authenticated to IP_REDACTED ([IP_REDACTED]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug3: packet_set_tos: set IP_TOS 0x10
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1

usando il metodo descritto qui ho generato l'output di strace e ho notato la linea 14:09:53.676004 ppoll([{fd=5, events=POLLIN}], 1, {24, 999645000}, NULL, 8) = 1 ([{fd=5, revents=POLLIN}], left {0, 0}) <25.020764>che impiega 25 secondi.

estratto dell'output di strace:

14:09:53.675567 clock_gettime(CLOCK_MONOTONIC, {4662549, 999741404}) = 0 <0.000024>
14:09:53.675651 recvmsg(5, {msg_name(0)=NULL, msg_iov(1)=[{"l\4\1\1\n\0\0\0\2\0\0\0\215\0\0\0\1\1o\0\25\0\0\0", 24}], msg_controll
en=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 24 <0.000024>
14:09:53.675744 recvmsg(5, {msg_name(0)=NULL, msg_iov(1)=[{"/org/freedesktop/DBus\0\0\0\2\1s\0\24\0\0\0"..., 146}], msg_controllen
=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 146 <0.000025>
14:09:53.675842 recvmsg(5, 0x7ffe0ff1dfa0, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailab
le) <0.000023>
14:09:53.675925 clock_gettime(CLOCK_MONOTONIC, {4662550, 96075}) = 0 <0.000024>
14:09:53.676004 ppoll([{fd=5, events=POLLIN}], 1, {24, 999645000}, NULL, 8) = 1 ([{fd=5, revents=POLLIN}], left {0, 0}) <25.020764>
14:10:18.696865 recvmsg(5, {msg_name(0)=NULL, msg_iov(1)=[{"l\3\1\0013\0\0\0\3\0\0\0m\0\0\0\6\1s\0\5\0\0\0", 24}], msg_controllen=0,     msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 24 <0.000017>
14:10:18.696944 recvmsg(5, {msg_name(0)=NULL, msg_iov(1)=[{":1.10\0\0\0\4\1s\0#\0\0\0org.freedesktop."..., 155}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = 155 <0.000018>

Ho notato una voce nei registri di autenticazione al momento pertinente:

Jul 21 14:10:18 click sshd[8165]: pam_systemd(sshd:session): Failed to create session: Activation of org.freedesktop.login1 timed out

Non sapendo abbastanza su cosa sta cercando di eseguire il polling e perché ora impiega 25 secondi su questo particolare server.

Il journalctl -u systemd-logindcomando mostra

Jul 20 11:33:06 click systemd-logind[19415]: Failed to abandon session scope: Transport endpoint is not connected
Jul 21 05:04:54 myhost systemd[1]: Started Login Service.
Jul 21 12:15:30 myhost systemd[1]: Started Login Service.
Jul 21 12:17:04 myhost systemd[1]: Started Login Service.
Jul 21 12:49:55 myhost systemd[1]: Started Login Service.
Jul 21 13:57:05 myhost systemd[1]: Started Login Service.
Jul 21 13:58:49 myhost systemd[1]: Started Login Service.
Jul 21 14:01:55 myhost systemd[1]: Started Login Service.
Jul 21 14:08:32 myhost systemd[1]: Started Login Service.
Jul 21 14:09:53 myhost systemd[1]: Started Login Service.
Jul 21 14:19:08 myhost systemd[1]: Started Login Service.
Jul 21 14:21:26 myhost systemd[1]: Started Login Service.
Jul 21 14:22:37 myhost systemd[1]: Started Login Service.
Jul 21 14:25:20 myhost systemd[1]: Started Login Service.
Jul 21 14:30:27 myhost systemd[1]: Started Login Service.
Jul 21 15:02:56 myhost systemd[1]: Started Login Service.

L'emissione del comando lo systemctl restart systemd-logind.servicerisolve (per ora probabilmente).

Cos'è Activation of org.freedesktop.login1menzionato? Esiste un modo per evitare di dover riavviare il logind in futuro? Mi aspetto che col tempo avrò questo problema con il resto dei server che gestisco.

Ho appena notato che questo inizia ad accadere su un altro server.

$ sudo service systemd-logind status

● systemd-logind.service - Login Service
   Loaded: loaded (/lib/systemd/system/systemd-logind.service; static)
   Active: active (running) since Tue 2015-06-16 14:10:57 BST; 1 months 12 days ago
     Docs: man:systemd-logind.service(8)
           man:logind.conf(5)
           http://www.freedesktop.org/wiki/Software/systemd/logind
           http://www.freedesktop.org/wiki/Software/systemd/multiseat
 Main PID: 1701 (systemd-logind)
   Status: "Processing requests..."
   CGroup: /system.slice/systemd-logind.service
           └─1701 /lib/systemd/systemd-logind

Jul 28 13:16:21 myhost systemd[1]: Started Login Service.
Jul 28 13:16:47 myhost systemd[1]: Started Login Service.
Jul 28 16:09:23 myhost systemd[1]: Started Login Service.
Jul 28 16:09:49 myhost systemd[1]: Started Login Service.
Jul 28 16:10:15 myhost systemd[1]: Started Login Service.
Jul 28 16:10:41 myhost systemd[1]: Started Login Service.
Jul 28 22:50:19 myhost systemd[1]: Started Login Service.
Jul 29 05:00:15 myhost systemd[1]: Started Login Service.
Jul 29 11:00:20 myhost systemd[1]: Started Login Service.
Jul 29 11:09:56 myhost systemd[1]: Started Login Service.

EDIT - journalctloutput esteso .

EDIT2 - aggiunto lo stato di systemd-logind come suggerito nei commenti quando notato questo a partire da un altro server.

AGGIORNAMENTO - Questo sta iniziando a succedere al resto dei miei server Jessie. Sono l'unico a sperimentarlo? Devono esserci altre soluzioni oltre al riavvio di systemd-logind, qualcuno ha qualche idea?

C'è una segnalazione di bug Debian su questo 770135 .


Sarebbe utile vedere l'output di systemcts status systemd-logindprima di riavviare per vedere cosa non andava (uscito, fallito, qualunque cosa). ppollè solo un mediatore in attesa di risposta da parte di systemd, quindi non puoi biasimarlo.
Jakuje,

non c'è alcun systemctscomando
Alasdair,

spiacente. systemctlovviamente
Jakuje,

Pensavo fosse quello che volevi dire, ma volevo esserne sicuro. Non è lo stesso output disponibile dal comandojournalctl -u systemd-logind
Alasdair,

dovrebbe mostrare il registro, ma anche lo stato del servizio stesso.
Jakuje,

Risposte:


48

Ciò accade quando si riavvia dbus, ma systemd-logind non viene riavviato. Basta fare quanto segue:

systemctl restart systemd-logind

La soluzione è da qui: https://major.io/2015/07/27/very-slow-ssh-logins-on-fedora-22/


1
Già dichiarato in questione, il bug report è ancora irrisolto, ma grazie per averlo ripristinato.
Alasdair,

Nota: questo può anche fornire un "loop di accesso" nel normale programma di benvenuto di lightdm; si applica la stessa soluzione.
unhammer,

1

usando:

systemctl restart systemd-logind

risolve il problema solo temporaneamente.

Una soluzione alternativa è rimuovere tutti i .scopefile da un processo cron, come indicato qui .

* 2,14 * * * root /bin/rm -f /run/systemd/system/*.scope

Il relativo rapporto sui bug di systemd è qui: Perdita di unità dell'ambito che rallenta i "file di unità-elenco di systemctl" e ritarda gli accessi .

Sembra che sia in realtà un bug dbus: unix fd conteggio in volo interrotto che è stato risolto nella versione 1.11.10 di dbus

Per una correzione permanente di questo bug, devi solo aspettare che questa versione di dbus appaia nella tua distribuzione. Per ora, Debian Stretch è su dbus 1.10.18, Ubuntu 17.04 (Zesty) è su 1.10.10, CentOS 7 è su dbus 1.6.12.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.