blu*_*blu 0 connection-pooling ruby-on-rails heroku sidekiq
我们在Herki上有一个带有Sidekiq的Rails应用程序,并且数据库连接不足.
ActiveRecord::ConnectionTimeoutError: could not obtain a database
connection within 5.000 seconds (waited 5.000 seconds)
Run Code Online (Sandbox Code Playgroud)
Heroku的东西:
数据库计划:Standard0(120个连接)
Web dynos:2 Standard-2X
工作人员dynos:1标准-2X
heroku配置:
MAX_THREADS: 5
(DB_POOL not set)
(WEB_CONCURRENCY not set)
Run Code Online (Sandbox Code Playgroud)
Procfile:
web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq
Run Code Online (Sandbox Code Playgroud)
database.yml的:
...
production:
url: <%= ENV["DATABASE_URL"] %>
pool: <%= ENV["DB_POOL"] || ENV['MAX_THREADS'] || 5 %>
Run Code Online (Sandbox Code Playgroud)
puma.rb:
# https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#adding-puma-to-your-application
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 2)
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
Run Code Online (Sandbox Code Playgroud)
sidekiq.yml:
---
:concurrency: 25
:queues:
- [default]
Run Code Online (Sandbox Code Playgroud)
我们还有一些耙子任务,每10分钟发射一次,并在一两秒内完成.
当我们在sidekiq中进行大量的消息处理时,问题似乎就发生了.我们做的事情如下:
虽然第4号正在发生,但我们看到了连接问题.
我的理解是我们的方式,方式,方式,低于我们上面的配置的连接限制,但我们做错了什么?是什么东西只是消耗池?任何帮助都会很棒,谢谢.
资料来源:
| 归档时间: |
|
| 查看次数: |
741 次 |
| 最近记录: |