我的数字海洋Droplet有一个运行Puma
的Rails应用程序作为它的Web服务器,Nginx
作为它的Web代理。
Puma在启动后每隔几个小时就会无声地崩溃,然后我会收到来自Uptime Robot的通知,然后我再次启动Puma。 Puma Access Log 中没有任何重要内容, Puma错误日志只有服务器启动信息:
=== puma startup: 2015-04-07 00:12:08 -0400 ===
* Listening on unix:///home/deploy/apps/kholopk/shared/tmp/sockets/kholopk-puma.sock
=== puma startup: 2015-04-07 02:19:16 -0400 ===
* Listening on unix:///home/deploy/apps/kholopk/shared/tmp/sockets/kholopk-puma.sock
=== puma startup: 2015-04-07 04:15:19 -0400 ===
* Listening on unix:///home/deploy/apps/kholopk/shared/tmp/sockets/kholopk-puma.sock
=== puma startup: 2015-04-07 06:16:15 -0400 ===
* Listening on unix:///home/deploy/apps/kholopk/shared/tmp/sockets/kholopk-puma.sock
这就是我的Droplet图形:
这是一个关于此的Open Github问题,在这里: Puma silently crashed #554 ,但它没有多大帮助。我甚至尝试将Puma降级为2.7.1
,就像一个用户说的那样,但这也没有帮助。
我正在使用Ruby 2.2
,Rails 4.2
,Puma 2.11.1
和This is how I set up my Droplet。这些是我的Puma Capistrano配置:
set :puma_threads, [4, 16]
set :puma_workers, 0
set :pty, true
set :use_sudo, false
set :stage, :production
set :deploy_via, :remote_cache
set :deploy_to, "/home/#{fetch(:user)}/apps/#{fetch(:application)}"
set :puma_bind, "unix://#{shared_path}/tmp/sockets/#{fetch(:application)}-puma.sock"
set :puma_state, "#{shared_path}/tmp/pids/puma.state"
set :puma_pid, "#{shared_path}/tmp/pids/puma.pid"
set :puma_access_log, "#{release_path}/log/puma.error.log"
set :puma_error_log, "#{release_path}/log/puma.access.log"
set :ssh_options, { forward_agent: true, user: fetch(:user), keys: %w(~/.ssh/id_rsa.pub) }
set :puma_preload_app, true
set :puma_worker_timeout, nil
set :puma_init_active_record, false # Change to true if using ActiveRecord