【问题标题】:Sidekiq daemon process dies after some secondSidekiq 守护进程在几秒钟后死亡
【发布时间】:2018-06-07 07:24:11
【问题描述】:
namespace :sidekiq do
  task :quiet do
    on roles(:app) do
      execute "pgrep -f 'sidekiq'| xargs kill -9 -USR1"
    end
  end
  task :restart do
    on roles(:app) do
      execute "cd #{current_path} bundle exec sidekiq -C config/sidekiq.yml -d"
    end
  end
end

after 'deploy:starting', 'sidekiq:quiet'
after 'deploy:reverted', 'sidekiq:restart'
after 'deploy:published', 'sidekiq:restart'

这是我在deploy.rb中使用的脚本

它会正确地终止进程,它还会创建一个守护进程,但在几秒钟内它就会终止。我正在使用 capistrano 进行部署。

我认为守护进程是子进程,而 capistrano 部署是父进程,所以在完成部署后它会杀死子进程(即守护进程)。

请帮帮我,我从上周开始就被卡住了。

【问题讨论】:

    标签: ruby-on-rails ruby process sidekiq capistrano3


    【解决方案1】:

    尝试使用模块capistrano-sidekiq。这很好用。

    另外你在一次执行中有两个命令,但是缺少&&

    execute "cd #{current_path} && bundle exec sidekiq -C config/sidekiq.yml -d"
    

    【讨论】:

    • 我会尝试 capistrano-sidekiq 并回复您。但有一件事我还在两个命令之间添加了“&&”,但它仍然会死掉。我检查了进程是否已创建但几秒钟后被杀死。我阅读了文档,其中看到守护进程(即子进程)在部署过程结束后立即被杀死(即父进程)。如果您对此有任何疑问,请告诉我
    • 尝试运行而不是执行
    • 我发现问题是我的 pty 设置为 true。我将 pty 设置为 false 但无法启动 nginx 服务器。执行 :sudo, "service nginx restart" 它给了我这个对不起,你必须有一个 TTY 才能运行 sudo 再次我被卡住了,请帮助
    • 试试 capistrano-sidekiq gem。它适用于 pty true。