在我的 RoR4 Heroku 应用程序上配置 Puma(多线程+多核服务器)时,我需要一些帮助。Heroku 文档不是最新的。我跟着这个:配置的并发和数据库连接,它没有提到集群的配置,所以我不得不一起使用这两种类型(线程和多核)。
我目前的配置:
./过程文件
web: bundle exec puma -p $PORT -C config/puma.rb
./config/puma.rb
environment production
threads 0,16
workers 4
preload_app!
on_worker_boot do
ActiveRecord::Base.connection_pool.disconnect!
ActiveSupport.on_load(:active_record) do
config = Rails.application.config.database_configuration[Rails.env]
config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10 # seconds
config['pool'] = ENV['DB_POOL'] || 5
ActiveRecord::Base.establish_connection
end
end
问题:
a) 我是否需要像 Unicorn 中的 before_fork / after_fork 配置,因为集群工作人员是分叉的?
b) 如何根据我的应用程序调整线程数 - 将其删除的原因是什么?/ 在什么情况下会有所作为?0:16 不是已经优化了吗?
c) Heroku 数据库允许 500 个连接。根据线程、工作者和测功机计数,DB_POOL 有什么好的价值?- 每个工作人员每个测功机的每个线程在并行工作时是否需要一个单独的数据库连接?
一般来说:我的配置在并发性和性能方面应该如何?