我有一个部署到Heroku的Sinatra应用程序。
我想通过puma.rb
配置文件将 Puma 配置为有多个工作线程,但自述文件中的两个示例都只显示了如何将"服务器名称"传递给Procfile
,但没有显示如何传递配置:
方法 1
bundle exec ruby app.rb -s puma
方法 2
require 'sinatra'
configure { set :server, :puma }
这里列出的所有方法都会遇到相同的问题:https://github.com/puma/puma/issues/13#issuecomment-7391148
我在puma.rb
中有我的配置:
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['THREAD_COUNT'] || 5)
threads threads_count, threads_count
如果有帮助,这是我config.ru
:
require './app'
run Sinatra::Application
我实际上尝试在Procfile
中这样做:
bundle exec puma -c puma.rb
这在本地工作得很好,但在生产中死亡,但没有生成日志,所以我不知道出了什么问题。
我这样解决了这个问题(问题是我在配置中缺少puma.rb
其余代码(
Procfile
web: bundle exec puma -C puma.rb
彪马
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['THREAD_COUNT'] || 5)
threads threads_count, threads_count
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
config.ru
require './app'
run Sinatra::Application
尝试大写C
而不是c
bundle exec puma -C puma.rb
https://github.com/puma/puma#clustered-mode