Đăng nhập ssh chậm - Đã kích hoạt org.freedesktop.login1


39

Trên một trong những máy chủ của tôi, tôi nhận thấy sự chậm trễ thực sự khi đăng nhập SSH.

Kết nối bằng các tùy chọn ssh -vvv, độ trễ xảy ra tại debug1: Entering interactive session.

trích xuất kết nối:

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

bằng cách sử dụng phương pháp được phác thảo ở đây, tôi đã tạo đầu ra strace và nhận thấy dòng 14:09:53.676004 ppoll([{fd=5, events=POLLIN}], 1, {24, 999645000}, NULL, 8) = 1 ([{fd=5, revents=POLLIN}], left {0, 0}) <25.020764>này mất 25 giây.

trích xuất đầu ra 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>

Tôi đã nhận thấy một mục trong nhật ký xác thực vào thời điểm thích hợp:

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

Không biết đủ về điều này, nó đang cố gắng thăm dò ý kiến ​​gì và tại sao bây giờ lại mất 25 giây trên máy chủ cụ thể này.

Các journalctl -u systemd-logindchương trình lệnh

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.

Phát hành lệnh systemctl restart systemd-logind.servicesửa nó (bây giờ có lẽ).

Là gì Activation of org.freedesktop.login1nó đề cập đến? Có cách nào để tôi có thể ngăn chặn việc khởi động lại logind trong tương lai không? Tôi hy vọng theo thời gian tôi sẽ gặp vấn đề này với phần còn lại của các máy chủ mà tôi quản lý.

Chỉ cần lưu ý điều này bắt đầu xảy ra trên một máy chủ khác.

$ 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 - journalctlđầu ra mở rộng .

EDIT2 - đã thêm trạng thái logind systemd như được đề xuất trong các bình luận khi nhận thấy điều này bắt đầu trên một máy chủ khác.

CẬP NHẬT - Điều này đang bắt đầu xảy ra với phần còn lại của máy chủ Jessie của tôi. Tôi có phải là người duy nhất trải nghiệm điều này? Phải có một số sửa chữa khác ngoài khởi động lại systemd-logind, có ai có suy nghĩ gì không?

Có một báo cáo lỗi Debian trên 770135 này .


Sẽ rất hữu ích khi xem đầu ra systemcts status systemd-logindtrước khi khởi động lại để xem có gì sai với nó (đã thoát, thất bại, bất cứ điều gì). ppollchỉ là một hòa giải viên đang chờ phản hồi từ systemd vì vậy bạn không thể đổ lỗi cho nó.
Jakuje

không có systemctslệnh
Alasdair

lấy làm tiếc. systemctltất nhiên
Jakuje 21/07/2015

Tôi nghĩ đó là những gì bạn muốn nói nhưng muốn chắc chắn. Có phải đó không phải là đầu ra giống như có sẵn từ lệnhjournalctl -u systemd-logind
Alasdair

nó sẽ hiển thị nhật ký, nhưng cũng có trạng thái của dịch vụ.
Jakuje

Câu trả lời:


48

Điều này xảy ra khi dbus được khởi động lại, nhưng systemd-logind không được khởi động lại. Chỉ cần làm như sau:

systemctl restart systemd-logind

Giải pháp là từ đây: https://major.io/2015/07/27/very-slow-ssh-logins-on-fedora-22/


1
Đã nêu trong câu hỏi, báo cáo lỗi vẫn chưa được giải quyết, nhưng cảm ơn vì đã khôi phục nó.
Alasdair

Lưu ý: điều này cũng có thể đưa ra một "vòng lặp đăng nhập" trong trình chào mừng lightdm thông thường; áp dụng giải pháp tương tự.
unhammer

1

Sử dụng:

systemctl restart systemd-logind

chỉ giải quyết vấn đề tạm thời

Một cách giải quyết khác là xóa tất cả các .scopetệp khỏi công việc định kỳ, như đã nêu ở đây .

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

Báo cáo lỗi systemd liên quan có ở đây: Rò rỉ các đơn vị phạm vi làm chậm "tập tin danh sách đơn vị systemctl" và trì hoãn đăng nhập .

Có vẻ như trên thực tế đó là một lỗi dbus: unix fd trong chuyến bay bị hỏng đã được giải quyết trong phiên bản dbus 1.11.10

Để khắc phục vĩnh viễn lỗi này, bạn chỉ cần chờ phiên bản dbus này xuất hiện trong bản phân phối của bạn. Hiện tại, Debian Stretch đang ở dbus 1.10,18, Ubuntu 17.04 (Zesty) là 1.10.10, CentOS 7 ở dbus 1.6.12.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.