如何解决使用Redis / Sidekiq / Postgres / Puma的Heroku Procfile的连接池/ Web并发设置
以下设置需要多少个数据库和Redis连接?如何修改设置以不超过我当前的数据库和Redis服务?
我的设置如下:
Heroku Postgres-连接限制为20的Hobby Basic Heroku Redis-连接限制为20的爱好开发 (我对非Heroku Postgres或Redis服务开放)
Web Dyno(X1或X2-需要查看内存使用情况),Web并发性为2,最大/最小线程数为5 工人Dyno(Sidekiq使用X1或X2)
我将使用Rails自动缩放来按需要缩放dyno。范围从1-3网络测功机。
Procfile
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
max_threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
min_threads_count = Integer(ENV['RAILS_MIN_THREADS'] || max_threads_count)
threads min_threads_count,max_threads_count
preload_app!
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
on_worker_boot do
ActiveRecord::Base.establish_connection
if defined?(Sidekiq)
Resque.redis = ENV["<redis-uri>"] || "redis://127.0.0.1:6379"
end
end
plugin :tmp_restart
puma.rb:
:timeout: 25
:queues:
- critical
- default
- mailers
production:
:verbose: false
:concurrency: 17
sidekiq.yml:
production:
adapter: postgresql
encoding: unicode
database: myapp_production
username: myapp
password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
url: <%= ENV["DATABASE_URL"] %>
pool: <%= ENV["DB_POOL"] || ENV['RAILS_MAX_THREADS'] || 5 %>
Database.yml
{% macro yes_or_no(a,b) %}
case
when a == 1 then {% set returner = 'yes' %}
else {% set returner = 'no' %}
end
{{return(returner)}}
{% endmacro %}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。