Es una especie de ocurrencia regular que, después de SSHing a un servidor (o incluso abrir un terminal en mi Mac), el banner de inicio de sesión se imprime inmediatamente, pero tarda ~ 10 segundos a un minuto para que aparezca el indicador de shell. Después de eso, el rendimiento es bueno y la latencia de red no es inusual.
Esto no parece una tarea computacionalmente difícil, que requiera mucha memoria o una gran cantidad de IO. ¿Qué está haciendo con todos esos miles de millones de ciclos de CPU?
ssh
performance
shell
jacobbaer
fuente
fuente
ssh -v -v -v
yur_shell -x
podrían ser pasos de depuración prudentes..bash_history
?Respuestas:
Muchas cosas podrían estar sucediendo aquí. Puede encontrar la mayoría de las respuestas en el manual de su shell, pero generalmente son increíblemente largas y oblicuas, así que ...
Lo más probable es que su problema se reduzca a una de algunas cosas.
Si su perfil o bashrc tienen cosas caras, considere recortarlas.
Si su perfil o bashrc usa una búsqueda inversa de DNS (para configurar el indicador o algo), arregle DNS o use el nombre de host en su lugar.
Los shells abren muchos archivos, entre otras cosas, mientras se inicializan. Si la carga del sistema es alta, a menudo aparecerá aquí.
Si el banner es autenticación previa, también podría ser una autenticación lenta (pam, LDAP, etc.).
Sin embargo, podría no ser ninguna de estas cosas. ¡Una cantidad sorprendente de cosas sucede justo antes de mostrar el aviso!
fuente
Probablemente esté esperando DNS o tratando de autenticarse a través de LDAP o similar.
Intente agregar
UseDNS no
a / etc / ssh / sshd_configSi también lo hace en inicios de sesión locales, verifique si los servidores LDAP o DNS que ha configurado son lentos o no responden.
fuente
Una posibilidad (cubierta por otras respuestas) es que el proceso de configuración de la sesión SSH es donde se pierde el tiempo.
Otra alternativa es que los scripts de inicio de shell que se ejecutan en la máquina remota después del establecimiento de la sesión SSH tienen algo que lleva mucho tiempo (tal vez intentando acceder a un montaje de red roto). Puede depurar esta segunda posibilidad de la siguiente manera:
Agregue temporalmente lo siguiente a la parte superior de su
~/.bash_profile
:Las
set -x
vueltas en alguna depuración para cada comando shell ejecutados. LaPS4
variable controla cómo se presenta esa depuración, específicamente en este caso, la usamosdate
para agregar marcas de tiempo.A continuación, puede analizar las marcas de tiempo de la salida de depuración para ver qué comandos en sus scripts de inicio tardan demasiado.
fuente
Si se trata de un servidor Ubuntu, la configuración de inicio de sesión predeterminada verifica si algún paquete es actualizable cada vez que se ejecuta un shell de inicio de sesión. Si las listas de paquetes no están en la memoria caché del disco, esto puede tomar uno o dos segundos incluso en un escritorio inactivo rápido.
Para generar ese mensaje de "reinicio requerido", tenía que verificar que el núcleo actualmente en ejecución no sea el núcleo predeterminado actualmente instalado. (es decir, había un kernel y aún no reinicié). También imprimirá un recuento de actualizaciones de seguridad disponibles, si hay alguna.
Creo que esta es la mayor desaceleración en el inicio de sesión en Ubuntu que se ha introducido recientemente.
Si no es así, entonces su
~/.bash_profile
/~/.bashrc
podría ser el problema.¿Has intentado iniciar sesión en el servidor desde sí mismo (
ssh localhost
)? ¿O iniciar sesión por segunda vez de inmediato? (Para ver si es mucho más rápido cuando las cosas se almacenan en caché).fuente
Esto es en la mayoría de los casos un tiempo de espera de una solicitud de DNS.
Causa: el servidor intenta una búsqueda inversa de DNS utilizando la dirección IP del cliente y no recibe una respuesta. Si A se conecta a B, B intenta convertir la dirección IP de A en un nombre.
Solución alternativa: ingrese la dirección IP y el nombre del cliente en el archivo de hosts del servidor.
Solución: haga que todos los hosts sean conocidos por el servidor DNS.
fuente