Ini semacam kejadian biasa yang, setelah SSHing ke server (atau bahkan membuka terminal di Mac saya), spanduk masuk dicetak segera tetapi dibutuhkan ~ 10 detik hingga satu menit agar shell prompt muncul. Setelah itu, kinerjanya baik-baik saja dan latensi jaringan tidak biasa.
Ini tidak tampak seperti tugas yang sulit secara komputasi, intensif memori, atau berat-IO. Apa yang dilakukannya dengan semua milyaran siklus CPU itu?
ssh
performance
shell
Jacobbaer
sumber
sumber
ssh -v -v -v
danur_shell -x
mungkin langkah debugging yang bijaksana..bash_history
?Jawaban:
Beberapa hal dapat terjadi di sini. Anda dapat menemukan sebagian besar jawaban dalam manual shell Anda, tetapi biasanya sangat panjang dan miring, jadi ...
Kemungkinannya adalah masalah Anda sampai pada satu dari beberapa hal.
Jika profil atau bashrc Anda memiliki barang mahal, pertimbangkan untuk memangkasnya kembali.
Jika profil atau bashrc Anda menggunakan pencarian DNS terbalik (untuk mengatur prompt atau sesuatu), perbaiki DNS atau gunakan nama host saja.
Kerang membuka banyak file, antara lain, saat inisialisasi. Jika beban sistem tinggi, sering muncul di sini.
Jika spanduk adalah pra-otentikasi, itu mungkin juga sebenarnya otentikasi (pam, LDAP, dll.) Yang lambat.
Mungkin ini bukan salah satu dari hal-hal ini. Sejumlah hal mengejutkan terjadi tepat sebelum menampilkan konfirmasi!
sumber
Mungkin menunggu DNS atau mencoba mengautentikasi melalui LDAP atau semacamnya.
Coba tambahkan
UseDNS no
ke / etc / ssh / sshd_configJika juga melakukannya di log masuk lokal, periksa apakah server LDAP atau server DNS yang Anda konfigurasikan lambat atau tidak responsif.
sumber
Satu kemungkinan (dicakup oleh jawaban lain) adalah bahwa proses mengatur sesi SSH itu sendiri adalah di mana waktu hilang.
Alternatif lain adalah bahwa skrip startup shell Anda berjalan pada mesin jarak jauh setelah pembentukan sesi SSH memiliki sesuatu yang memakan waktu lama (mungkin mencoba untuk mengakses beberapa pemasangan jaringan yang rusak). Anda dapat men-debug kemungkinan kedua ini sebagai berikut:
Tambahkan sementara berikut ke bagian atas Anda
~/.bash_profile
:The
set -x
bergantian pada beberapa debugging untuk setiap perintah shell dieksekusi. ThePS4
kontrol variabel bagaimana yang debugging disajikan - khususnya dalam hal ini kita gunakandate
untuk menambahkan cap waktu.Anda kemudian dapat menganalisis cap waktu output debugging untuk melihat perintah mana dalam skrip startup Anda yang terlalu lama.
sumber
Jika ini adalah server Ubuntu, pengaturan login default memeriksa apakah ada paket yang dapat diupdate setiap kali shell login berjalan. Jika daftar paket tidak ada dalam cache disk, ini bisa memakan waktu satu atau dua detik bahkan pada desktop cepat idle.
Untuk menghasilkan pesan "restart diperlukan", itu harus memeriksa bahwa kernel yang sedang berjalan bukan kernel default yang diinstal saat ini. (Yaitu ada kernel dan saya belum reboot.) Ini juga akan mencetak hitungan pembaruan keamanan yang tersedia, jika ada.
Saya pikir ini adalah kemunduran besar dalam masuk ke Ubuntu yang telah diperkenalkan baru-baru ini.
Jika tidak, maka
~/.bash_profile
/ Anda~/.bashrc
mungkin masalahnya.Sudahkah Anda mencoba masuk ke server dari sendirinya (
ssh localhost
)? Atau langsung login ke-2? (Untuk melihat apakah itu jauh lebih cepat ketika barang di-cache.)sumber
Dalam kebanyakan kasus, ini adalah batas waktu permintaan DNS.
Penyebab: Server mencoba pencarian DNS terbalik menggunakan alamat IP klien, dan tidak mendapat balasan. Jika A terhubung ke B, B mencoba mengubah alamat IP A menjadi sebuah nama.
Penanganan Masalah: Masukkan alamat IP dan nama klien ke file host dari server.
Solusi: buat semua host diketahui ke server DNS.
sumber