2012-07-19 37 views
12

Muy bien, he echado un vistazo en la web y realmente no parece que muchas otras personas tengan este problema, pero tal vez algo más esté mal con lo que estamos haciendo.Capistrano Deploy Timeout

He mananged a destilar se reduce a lo que creo que es un caso de prueba útil:

config/deploy.rb:

## Excerpt 
task :big_delay, :roles => :web do 
    run "sleep 480" 
    run "echo Meow Meow Meow" 
end 

Y stupid_script.sh:

#!/bin/sh 
ssh foo 'sleep 480; echo Meow Meow Meow' 

Donde foo es el nombre del mismo servidor en el que implementamos.

Cuando ejecuto ambos, debe conectarse a la otra caja, no hacer nada durante 8 minutos, luego escupir un texto inútil y completar.

El stupid_script funciona, y la tarea de límite falla. Veo que el comando remoto termina con ps xf, pero la tapa ya no parece darse cuenta. Si la suspensión es de 20 en lugar de 240, la tarea de tapa funciona bien.

Obviamente, esta tarea es muy inútil, pero tenemos cosas costosas que se ejecutan en el despliegue que desencadenan esto, y he hecho esto para descartar cualquier culpa en ssh.

Otro punto de datos, si ingresamos al recuadro y ponemos el código allí y luego ejecutamos la implementación del límite desde allí, entonces funciona bien.

Entonces ... parece que hay una extraña interacción entre ssh y capistrano. ¿Pensamientos?

+3

No estoy entrando en esto como respuesta porque no estoy seguro de que solucionará su problema, pero la conexión ssh podría estarse agotando. Intente configurar ClientAliveInterval y ClientAliveCountMax en/etc/ssh/sshd_config del servidor: http://www.cyberciti.biz/tips/open-ssh-server-connection-drops-out-after-few-or-n-minutes-of -inactivity.html – choover

+0

Puede intentar mezclar sus ajustes de keepalive o hacer que su script de stall imprima algo intermitentemente. Esto podría ser una rueda giratoria de espera, una serie de puntos, o incluso solo retornos de carro para cortar la conexión. – tadman

+0

Podría estar equivocado, pero sentí que excluí el tiempo de espera de ssh con ./stupid_script.sh, que ingresa en la misma casilla y ejecuta los mismos comandos y nunca falla. – psycotica0

Respuesta

10

Establezca ClientAliveInterval y ClientAliveCountMax en/etc/ssh/sshd_config en el servidor como lo sugiere choover. Tuve exactamente el mismo problema con "assets: precompile" en mi implementación hasta que hice ese cambio.

+0

Tuve el mismo problema con los activos de precompilación, y esto lo resolvió para mí. –

+0

Me parece un poco ridículo que capistrano ignore todas las configuraciones ssh locales ... De todos modos, parece que mejora las cosas. – psycotica0

+0

Tenga en cuenta que no es necesario cambiar el valor de ClientAliveCountMax. Sus valores predeterminados de 3 son suficientes en la mayoría de los casos. –

Cuestiones relacionadas