10

Ho uno strano problema nella stadiazione dopo la migrazione verso l'unicorno da parte del passeggero.unicorno si blocca dicendo Gemme rinfrescanti

Ho configurato unicorno per ambiente di sviluppo e di staging. sta lavorando allo sviluppo ma non in scena. In fase di sviluppo ascolta l'8080 dove, come nella messa in scena, ascolta un socket unix. Questo farà qualche differenza? Soprattutto nella produzione kinda env?

Questo è ciò che accade quando faccio funzionare nella messa in scena

  1. Ci vuole quasi il 100% della CPU durante l'avvio
  2. a volte si deposita verso il basso e sono in grado di usarlo
  3. * Ma la maggior parte del volte pende ** e ho dovuto ucciderlo.

ho registrato una domanda riguardo a questo problema click here

Questo è quello che vedo in unicorn.stderr.log

I, [2011-08-26T09:02:53.324286 #5026] INFO -- : unlinking existing socket=/home/krishnaprasad/project_name/tmp/sockets/unicorn.sock 
I, [2011-08-26T09:02:53.324502 #5026] INFO -- : listening on addr=/home/krishnaprasad/project_name/tmp/sockets/unicorn.sock fd=3 
I, [2011-08-26T09:02:53.324860 #5026] INFO -- : Refreshing Gem list 

perché ci si tenta di aggiornare le gemme? c'è un modo per evitarlo nel file di configurazione?

questo è quello che ho in config/unicorn_staging.rb

# unicorn_rails -c /config/unicorn_staging.rb -E staging -D 

rails_env = 'staging' 

working_directory "/home/krishnaprasad/Projects/project_name" 
worker_processes 1 
preload_app true 
timeout 90 

rails_root = "/home/krishnaprasad/Projects/project_name" 
listen "#{rails_root}/tmp/sockets/unicorn.sock", :backlog => 2048 

pid "#{rails_root}/tmp/pids/unicorn.pid" 
stderr_path "#{rails_root}/log/unicorn.log" 
stdout_path "#{rails_root}/log/unicorn.log" 

GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=) 

before_fork do |server, worker| 
    ActiveRecord::Base.connection.disconnect! 
    old_pid = "#{Rails.root}/tmp/pids/unicorn.pid.oldbin" 
    if File.exists?(old_pid) && server.pid != old_pid 
    begin 
     Process.kill("QUIT", File.read(old_pid).to_i) 
    rescue Errno::ENOENT, Errno::ESRCH 
     # someone else did our job for us 
    end 
    end 
end 

after_fork do |server, worker| 
    ActiveRecord::Base.establish_connection 
end 

Qualsiasi aiuto molto apprezzato. Grazie in anticipo

+0

Hai mai capito questo? Ho avuto lo stesso problema. – David

+0

ho rimosso questa riga e l'ho trovata funzionante ma è ancora lenta after_fork do | server, worker | ActiveRecord :: Base.establish_connection fine –

+0

Sembra che la rimozione di questa linea causi problemi con gli handle di database condivisi nei sottoprocessi dell'unicorno. Ho finito per non essere in grado di eseguire Unicorn in modalità daemon con l'app di precaricamento. Una volta disabilitata l'app di precaricamento, ha smesso di causare problemi. – David

risposta

0

Assicurati che il tuo codice sia privo di errori di sintassi!

Per me correggere un errore di sintassi (in uno dei miei controller) ha chiuso il ciclo e avviato Unicorn correttamente. Non ho ricevuto alcun messaggio di errore in Unicorn, potresti provare a iniziare a utilizzare WebRat e vedere se si verifica un errore.

0

Per me, era la connessione del database non è stata configurata correttamente. Sembra che a volte lo segnalino alla console, a volte semplicemente gira.