2012-12-11 11 views
6

Invio un segnale USR2 al processo principale per ottenere zero tempi di inattività con unicorno. Dopo che il vecchio maestro è morto, sto ottenendo il seguente errore:L'unicorno non riesce a generare lavoratori sul segnale USR2

adding listener failed addr=/path/to/unix_socket (in use) 

unicorn-4.3.1/lib/unicorn/socket_helper.rb:140:in `initialize': 
Address already in use - /path/to/unix_socket (Errno::EADDRINUSE) 

Il vecchio maestro viene ucciso nel before_fork blocco sul file di configurazione unicorn.rb. Il processo viene avviato tramite upstart senza l'opzione daemon (-D). Qualche Ideia su cosa sta succedendo?

+0

Cam hai condiviso il blocco before_fork dal tuo unicorn.rb? – pschuegr

risposta

2

Bene, risulta che è necessario eseguire in modalità demonizzata (-D) se si vuole essere in grado di fare zero downtime deployment. Ho cambiato alcune cose nel mio script upstart e ora funziona bene:

setuid username 
pre-start exec unicorn_rails -E production -c /path/to/app/config/unicorn.rb -D 
post-stop exec kill cat `/path/to/app/tmp/pids/unicorn.pid` 
respawn 
Problemi correlati