我在AWS EC2实例上的rails应用程序上运行了一个ruby服务器。它工作正常一段时间,但几小时后我发现它回应了502错误。该应用程序部署了capistrano。
Puma的简单重启暂时解决了问题,但我想防止它再次发生。不太清楚首先要尝试什么。
这是我的capistrano puma配置:
set :puma_rackup, -> { File.join(current_path, 'config.ru') }
set :puma_state, "#{shared_path}/tmp/pids/puma.state"
set :puma_pid, "#{shared_path}/tmp/pids/puma.pid"
set :puma_bind, "unix://#{shared_path}/tmp/sockets/puma.sock"
set :puma_conf, "#{shared_path}/puma.rb"
set :puma_access_log, "#{shared_path}/log/puma.error.log"
set :puma_error_log, "#{shared_path}/log/puma.access.log"
set :puma_role, :app
set :puma_env, fetch(:rack_env, fetch(:rails_env, 'production'))
set :puma_threads, [0, 8]
set :puma_workers, 0
set :puma_worker_timeout, nil
set :puma_init_active_record, true
set :puma_preload_app, false
set :bundle_gemfile, -> { release_path.join('Gemfile') }
Puma错误日志不显示任何崩溃。
Nginx错误日志显示(xx' d out client ip): 2016/08/09 06:25:52 [错误] 1081#0:* 348 connect()到unix:///home/deploy/myapp/shared/tmp/sockets/puma.sock失败(111:拒绝连接)连接到上游时,客户端:xx.xx.xx.xx,server:example.com,请求:" POST / mypath HTTP / 1.1",上游:" http://unix:///home/deploy/myapp/shared/tmp/sockets/puma.sock:/mypath& #34;,主持人:" example.com"
答案 0 :(得分:1)
好的,谢谢配置。这一切看起来都很好所以我猜你是因为扩展不好而导致进程崩溃。自从您投入生产以来,我建议取消对工作人员的注释并使用至少2名工人。这至少会使您免受崩溃的影响,因为其他工作人员将能够处理流量,同时崩溃的流量会自动重启。