我正在将Elastic Rails 5.2应用程序部署在Elastic beantalk中,其中puma作为应用程序服务器,Nginx被Elastic Beanstalk默认设置为
。我正面临种族问题。在检查容器实例中的更多详细信息后,我发现了这一点:
#example /opt/elasticbeanstalk/support/conf/pumaconf.rb
directory '/var/app/current'
threads 8, 32
workers %x(grep -c processor /proc/cpuinfo)
bind 'unix:///var/run/puma/my_app.sock'
pidfile '/var/run/puma/puma.pid'
stdout_redirect '/var/log/puma/puma.log', '/var/log/puma/puma.log', true
daemonize false
如此处所示,工人的数量等于我的CPU内核的数量。
但是,在Heroku.com中,我们可以这样做:
# config/puma.rb
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
# Worker specific setup for Rails 4.1+
# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
ActiveRecord::Base.establish_connection
end
如何减少弹性beantalk中的线程数并增加工人数?考虑到我启用了负载均衡器,并且上面的配置由弹性beantalk管理。
对于Heroku,我可以使用puma.rb进行管理,但是在弹性beantalk中,除了更改文件之外,我看不到其他任何方法
/opt/elasticbeanstalk/support/conf/pumaconf.rb
手动。当实例数量按比例缩小或放大时,手动修改会引起问题。
答案 0 :(得分:0)
不确定,如果您已解决问题。我有一个类似的问题,我使用.ebextensions解决了。
您可以在代码中的config目录中创建一个新的pumaconf.rb文件。然后在.ebextensions目录中,创建一个文件,该文件将复制出新的pumaconf.rb并替换默认的pumaconf.rb。
此外,如果您要这样做。在您的.ebextensions代码中,将此路径用于新文件
/var/app/ondeck/config/pumaconf.rb
不是
/var/app/current/config/pumaconf.rb
由于使用了后者,因此不会复制您最新的pumaconf.rb
cp /var/app/ondeck/config/pumaconf.rb /opt/elasticbeanstalk/support/conf/pumaconf.rb