Catatan: Ini dimulai sebagai "Cara debug", tutorial, tetapi akhirnya menjadi solusi yang membantu saya di server Ubuntu 16.04 LTS.
TLDR : Jalankan landscape-sysinfo
dan periksa apakah perintah itu membutuhkan waktu lama untuk selesai; itu adalah cetakan informasi sistem pada login SSH baru. Perhatikan bahwa perintah ini tidak tersedia di semua sistem, landscape-common
paket menginstalnya. ("Tapi tunggu, masih ada lagi ...")
Mulai server ssh kedua pada port lain pada mesin yang memiliki masalah, lakukan dalam mode debug, yang tidak akan membuatnya bercabang dan akan mencetak pesan debug:
sudo /usr/sbin/sshd -ddd -p 44321
terhubung ke server itu dari komputer lain dalam mode verbose:
ssh -vvv -p 44321 username@server
Klien saya menampilkan baris berikut tepat sebelum mulai tidur:
debug1: Entering interactive session.
debug1: pledge: network
Googling yang tidak terlalu membantu, tetapi log server lebih baik:
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
Saya menyadari bahwa ketika saya mengubah UsePAM yes
ke UsePAM no
kemudian masalah ini diselesaikan.
Tidak terkait dengan UseDNS
atau pengaturan lainnya, hanya UsePAM
memengaruhi masalah ini di sistem saya.
Saya tidak tahu mengapa, dan aku juga tidak meninggalkan UsePAM
di no
, karena saya tidak tahu mana efek samping, tapi ini membuat saya terus menyelidiki.
Jadi tolong jangan menganggap ini sebagai jawaban, tetapi langkah pertama untuk mulai mencari tahu apa yang salah.
Jadi saya terus menyelidiki, dan berlari sshd
dengan strace
( sudo strace /usr/sbin/sshd -ddd -p 44321
). Ini menghasilkan yang berikut:
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
Garis itu /etc/update-motd.d
membuatku curiga, ternyata prosesnya menunggu hasil dari barang-barang yang ada di dalamnya/etc/update-motd.d
Jadi saya cd
masuk /etc/update-motd.d
dan menjalankan sudo chmod -x *
perintah untuk menghambat PAM untuk menjalankan semua file yang menghasilkan dinamika ini Message Of The Day
, yang mencakup beban sistem dan jika paket perlu ditingkatkan, dan ini menyelesaikan masalah.
Ini adalah server berbasis pada CPU N3150 "hemat energi" yang memiliki banyak pekerjaan yang harus dilakukan 24/7, jadi saya pikir mengumpulkan semua data motd ini terlalu banyak untuk itu.
Saya mungkin mulai mengaktifkan skrip di folder itu secara selektif, untuk melihat mana yang kurang berbahaya, tetapi panggilan khusus landscape-sysinfo
sangat lambat, dan 50-landscape-sysinfo
memang memanggil perintah itu. Saya pikir itu yang menyebabkan keterlambatan terbesar.
Setelah mengaktifkan kembali sebagian besar file saya sampai pada kesimpulan bahwa
50-landscape-sysinfo
dan 99-esm
merupakan penyebab masalah saya. 50-landscape-sysinfo
butuh sekitar 5 detik untuk dieksekusi dan 99-esm
sekitar 3 detik. Semua file yang tersisa sekitar 2 detik sama sekali.
Tidak penting 50-landscape-sysinfo
dan 99-esm
sangat penting. 50-landscape-sysinfo
mencetak statistik sistem yang menarik (dan juga jika Anda kekurangan ruang!), dan 99-esm
mencetak pesan yang berkaitan denganUbuntu Extended Security Maintenance
Akhirnya, Anda dapat membuat skrip dengan echo '/usr/bin/landscape-sysinfo' > info.sh && chmod +x info.sh
dan mendapatkan hasil cetak atas permintaan.