Pergunta

Eu estou um pouco confuso sobre o meu implantar a estratégia, ao implantar, em que circunstâncias eu gostaria de enviar uma reload sinal de unicórnio?Por exemplo no meu caso seria assim:

sudo kill -s USR2 `cat /home/deploy/apps/my_app/current/tmp/pids/unicorn.pid`

Eu tenho implantação de meus apps pelo assassinato que pid, em seguida, a partir do unicórnio novamente através de algo como:

bundle exec unicorn -c config/unicorn/production.rb -E production -D

Eu só estou perguntando por que eu iria querer usar recarregar?Posso ganho de desempenho para o meu implantação fazendo isso?

Foi útil?

Solução

Quando você matar o unicórnio você causar tempo de inatividade, até o unicórnio pode iniciar o backup.Quando você usa o USR2 sinal, unicórnio inicia novos trabalhadores de primeira e, em seguida, uma vez que eles estão executando, ele mata o velho trabalhadores.É basicamente tudo sobre a remoção a necessidade de se "desligar" do unicórnio.

Nota, o pressuposto é que você tem documentado before_fork gancho em seu unicórnio de configuração, a fim de lidar com a morte do velho trabalhadores, deve um ".oldbin" arquivo ser encontrado, que contém o PID do antigo unicórnio processo:

before_fork do |server, worker|
  # a .oldbin file exists if unicorn was gracefully restarted with a USR2 signal
  # we should terminate the old process now that we're up and running
  old_pid = "#{pids_dir}/unicorn.pid.oldbin"
  if File.exists?(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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top