Bir kabuk istemi almak neden on saniye sürüyor?


30

Bir sunucuya SSHing yaptıktan sonra (veya Mac bilgisayarımdaki bir terminali açtıktan sonra), giriş başlığının hemen yazdırılması, ancak kabuk isteminin görünmesi bir dakikadan ~ 10 saniye kadar sürer. Bundan sonra, performans iyi ve ağ gecikmesi sıradışı değil.

Bu işlemsel olarak zor, bellek yoğun veya GÇ yoğun bir iş gibi gözükmüyor. Bu milyarlarca CPU döngüsüyle ne işi var?


8
ssh -v -v -vve ur_shell -xihtiyatlı hata ayıklama adımları olabilir.
saat

2
İçinde çok fazla çizgi var mı .bash_history?
kasperd

2
.Profile dosyalarınıza ve ilgili dosyalarınıza bakın (üzgünüm, hangi kabuğu kullandığınızdan emin değilsiniz) ve işlerin iyileşip iyileşmediğini görmek için geçici olarak kaldırın. Muhtemelen zaman aşımına uğrayan bir komutunuz vardır.
TheFiddlerWins,

3
Moby Disk'in önerisine alternatif olarak, kabuğun kendisini kabuğun içinden başlatırsanız, hala eşit derecede yavaş mı olur? Bağlanmakta yavaş (yeniden), ancak mevcut bir bağlı oturumdan ikinci bir kabuğu başlatırken hızlıysa, bu, yavaşlamaya neden olan kabuğun kendisi olmadığını söyleyecektir; iki durumda da eşit derecede yavaşsa, kabuğun başlangıçta yaptığı bir şey çok zaman alıyor. Her iki durumda da "sıfırdan kabuk istemi" nin hangi yönünün yavaş olduğunu öğreneceksiniz.
CVn

2
Çoğu zaman bu, GSSAPI kimlik doğrulaması gerçekleşmeye çalışır (eğer Kerberos mağazası değilseniz, muhtemelen tamamen yararsızdır). Diğer zamanlarda DNS geriye doğru arama yapar.
Charles Duffy,

Yanıtlar:


33

Burada pek çok şey olabilir. Cevapların çoğunu kabuğunuzun kılavuzunda bulabilirsiniz, ancak bunlar genellikle inanılmaz derecede uzun ve eğik, yani ...

Muhtemelen problemin birkaç şeyden birine bağlı.

Profiliniz veya bashrc'nizin pahalı şeyleri varsa, onları yeniden kesmeyi düşünün.

Profiliniz veya bashrc, geriye doğru bir DNS araması kullanıyorsa (soruyu veya başka bir şeyi ayarlamak için), DNS'yi düzeltin veya bunun yerine ana bilgisayar adını kullanın.

Kabuklar, başlatırken, diğer şeylerin yanı sıra çok fazla dosya açar. Sistemin yükü yüksekse, burada sık sık ortaya çıkar.

Afiş ön kimlik doğrulama ise, aslında yavaş olan kimlik doğrulama (pam, LDAP vb.) Olabilir.

Yine de bunların hiçbiri olmayabilir. İstemi görüntülemeden hemen önce şaşırtıcı miktarda şey olur!


1
Uzun süredir engellediğim bir diğer blok GSSAPI kimlik doğrulaması deneniyor (SSH istemcisi veya sunucu yapılandırmasında kapalı değilse). Sysdig gibi bir tam sistem izleme aracını kullanmak, muhtemelen bu tür bir çapraz-kaygı sorununun dibine ulaşmak için mevcut en iyi gümüş kurşundur.
Charles Duffy

+1 Tam cevap. Bu site , giriş yaptığı dosyalar / çalıştırdıkları dosyalar ve diğer bilgiler için güzel bir akış çizelgesine sahiptir.
Tim S.

15
+1. Benim için zamanın% 99'u ters DNS araması.
mpontillo

@Mike: burada aynı - Bunu düzeltmek kolay olduğu için bununla başlamanızı tavsiye ederim. Benim durumumda% 100'dü.
WoJ

22

Muhtemelen ya DNS'i bekliyor ya da LDAP ya da böyle bir kimlik doğrulaması yapmaya çalışıyor.

UseDNS no/ Etc / ssh / sshd_config dosyasına eklemeyi deneyin

Yerel oturumlarda da yaparsa, yapılandırdığınız herhangi bir LDAP sunucusunun veya DNS sunucusunun yavaş veya yanıt vermiyor olduğunu kontrol edin.


6

Bir olasılık (diğer cevaplar tarafından kapsanan), SSH oturumunu kurma sürecinin zamanın kaybolduğu yer olmasıdır.

Başka bir alternatif, SSH oturumunun kurulmasından sonra uzaktaki makinede çalışan kabuk başlatma komut dosyalarınızın uzun zaman alan bir şey (belki de bazı bozuk ağ montajlarına erişmeye çalışıyor) olmasıdır. Bu ikinci olasılığı aşağıdaki gibi hata ayıklayabilirsiniz:

Aşağıdakileri geçici olarak üstüne ekleyin ~/.bash_profile:

set -x
PS4='+ $(date "+%s.%N")\011 '

set -xHer kabuk komutu için bazı hata ayıklamayı döner yürüttü. PS4Bu hata ayıklama sunulmuştur ne kadar değişken kontrolleri - özellikle bu durumda kullandığımız datedamgaları ekleyin.

Daha sonra başlangıç ​​komut dosyalarınızdaki hangi komutların çok uzun sürdüğünü görmek için hata ayıklama çıktısının zaman damgalarını analiz edebilirsiniz.


1
Uzak oturum açıldıktan sonra sorun olursa ve yalnızca gerçekleşirse geçerlidir. Potansiyel nedenlerin birçoğu SSH anlaşması ve kimlik doğrulama sırasındadır.
Charles Duffy,

2
Çok gelişmiş. :)
Charles Duffy

3

Bir Ubuntu sunucusuysa, varsayılan oturum açma ayarları, bir oturum açma kabuğu her çalıştırıldığında paketlerin güncellenebilir olup olmadığını kontrol eder. Paket listeleri disk önbelleğinde değilse, hızlı ve boşta çalışan bir masaüstünde bile bir veya iki saniye sürebilir.

$ ssh localhost 
Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-26-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

*** System restart required ***
Last login: Sat Sep 12 01:38:38 2015 from localhost

Bu "gerekli yeniden başlatma" mesajını oluşturmak için, o anda çalışan çekirdeğin şu anda yüklü olan varsayılan çekirdek olmadığını kontrol etmek zorunda kaldı. (yani bir çekirdek vardı ve henüz yeniden başlatmadım.) Varsa, bir dizi güvenlik güncellemesi de yayınlayacaktır.

Bence bu, son zamanlarda tanıtılan Ubuntu'ya giriş yaparken yaşanan büyük yavaşlama.

Değil ise, o zaman ~/.bash_profile/ ~/.bashrcsorun olabilir.

Sunucuya kendisinden giriş yapmayı denediniz ssh localhostmi ( )? Ya da hemen ikinci kez giriş? (İşler önbelleğe alındığında daha hızlı olup olmadığını görmek için.)


2

Bu çoğu durumda bir DNS isteğinin zaman aşımıdır.

Neden: Sunucu, istemcinin IP adresini kullanarak ters bir DNS araması yapmaya çalışır ve bir yanıt alamaz. A B'ye bağlanırsa, B A'nın IP adresini bir isme dönüştürmeye çalışır.

Çözüm: İstemcinin IP adresini ve adını sunucunun ana bilgisayar dosyasına girin.

Çözüm: tüm ana bilgisayarları DNS sunucusu tarafından bilinmesini sağlayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.