Почему Puma продолжает тихо падать?

У меня есть дроплет Digital Ocean, в котором есть приложение Rails, работающее Puma в качестве веб-сервера и Nginx в качестве веб-прокси.

Puma молча падает каждые несколько часов после загрузки, затем я получаю уведомление от Uptime Robot и снова запускаю Puma. В журнале доступа Puma нет ничего важного, а журнал ошибок 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 Issue, здесь: Puma тихо разбился #554 но это не сильно помогло. Я даже пытался понизить рейтинг Puma до 2.7.1, как сказал один пользователь, но это тоже не помогло.

Я использую Ruby 2.2, Rails 4.2, Puma 2.11.1 и Вот как я настроил свою каплю. Это мои конфигурации 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

person Sheharyar    schedule 08.04.2015    source источник
comment
Можете ли вы вставить свой puma.error.log, чтобы лучше понять, чем вызвана ваша проблема?   -  person r4m    schedule 08.04.2015
comment
@r4m Я уже вставил это выше   -  person Sheharyar    schedule 08.04.2015
comment
Еще одно место для поиска — /var/log/syslog. Если вам не хватает памяти, ядро ​​​​может убить процесс.   -  person andrewsomething    schedule 08.04.2015
comment
@andrewsomething Я только что проверил, ничего не связано с моим приложением в /var/log/syslog. Последняя запись в нем сделана месяц назад, когда я впервые создал дроплет.   -  person Sheharyar    schedule 08.04.2015
comment
Я изучал это, и, возможно, это проблема с утечками памяти в Ruby 2.2.0, как указано здесь: Есть ли в Ruby 2.2 проблемы с памятью?   -  person Sheharyar    schedule 08.04.2015