Rails,Unicorn,Concurrent Requests Breaks app

时间:2015-04-28 01:36:46

标签: ruby-on-rails unicorn

我最近部署了一个Ruby on Rails应用程序,当有太多用户试图使用它时遇到了瓶颈问题。这是一个简单的游戏统计应用程序。用户输入他的名字,应用程序进行API调用,然后返回用户的统计信息。当只有少数用户时,它可以很好地工作。当更多用户开始使用它时,会产生令人难以忍受的延迟,有时每个请求最多可达5分钟。因此,我在我的Gemfile添加了独角兽,设置了Procfile并进行了部署。现在,如果有两个同时发出的请求,它会崩溃应用程序。我以为独角兽是为了处理并发请求,而不是销毁它们?至少在此之前,我的请求仍在处理中,尽管有延迟。我在这里做错了什么?

以下是我使用的Procfile

web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb

这是我的独角兽文件:

worker_processes 3
timeout 30
preload_app true

before_fork do |server, worker|

  Signal.trap 'TERM' do
    puts 'Unicorn master intercepting TERM and sending myself QUIT     instead'
    Process.kill 'QUIT', Process.pid
  end

  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.connection.disconnect!
end

after_fork do |server, worker|

  Signal.trap 'TERM' do
    puts 'Unicorn worker intercepting TERM and doing nothing. Wait for     master to sent QUIT'
  end

  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.establish_connection
end

0 个答案:

没有答案