Domanda

Sto eseguendo unicorn e sto cercando di far funzionare zero tempi di inattività.

Finora è tutta una salsa fantastica, il processo master forchetta e avvia 4 nuovi lavoratori, poi uccide quello vecchio, tutti sono felici.

I nostri script inviano il seguente comando per riavviare unicorn:

kill -s USR2 `cat /www/app/shared/pids/unicorn.pid`

In apparenza tutto sembra fantastico, ma si scopre che unicorn non sta ricaricando production.rb.(Ogni volta che distribuiamo, cambiamo il valore config.action_controller.asset_host in un nuovo endpoint del contenitore CDN con le nostre risorse precompilate al suo interno).

Dopo aver riavviato Unicorn in questo modo, l'host dell'asset punta ancora alla vecchia versione.Facendo un riavvio reale (cioè: interrompi il processo principale, quindi riavvia Unicorn da zero) preleva le nuove modifiche alla configurazione.

preload_app è impostato su true nel nostro file di configurazione unicorno.

Qualche idea?

È stato utile?

Soluzione

La mia ipotesi è che i tuoi unicorni vengano riavviati nella vecchia directory di produzione piuttosto che nella nuova directory di produzione - in altre parole, se la tua directory di lavoro in unicorn.rb è <capistrano_directory>/current, devi assicurarti che il collegamento simbolico avvenga prima di teprova a riavviare gli unicorni.

Questo spiegherebbe perché arrestarli e avviarli manualmente funziona: presumibilmente lo stai facendo dopo la distribuzione, il che fa sì che vengano avviati nella directory corretta.

Quando nel processo di distribuzione riavvii gli unicorni?Dovresti assicurarti che il segnale USR2 venga inviato dopo che la directory della nuova versione è collegata simbolicamente come corrente.

Se questo non aiuta, riassumi il tuo unicorn.rb e deploy.rb;renderà molto più facile eseguire il debug di questo problema.

Altri suggerimenti

Tieni presente che: la tua directory di lavoro in unicorn.rb dovrebbe essere: / tuo / cap / directory / current

NON essere: File.expand_path ("../ ..", FILE )

Perché l'errore di biforcazione del soft link unicorn e linux: soft link non può funzionare bene.

ad esempio:

cd current #current è un collegamento software a un'altra directory

... ...

quando otteniamo la nostra directory di lavoro, abbiamo il percorso assoluto non il percorso in "corrente"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top