Ошибка пула соединений в приложении Rails с Postgres - PullRequest
0 голосов
/ 25 мая 2020

У меня проблема, когда мое приложение Rails развернуто в AWS ECS. Многие запросы завершаются sh с 200, но есть некоторые (каждые, скажем, 50), завершают sh с 500. В журнале написано:

ActiveRecord::ConnectionNotEstablished (No connection pool with 'primary' found.)

Я изменил свой пул (в database.yml config) на 15, также установил RAILS_MAX_THREADS на 15, и действительно, сейчас это случается редко, но проблема все еще возникает .

Что мне здесь не хватает?

Ruby версия: 2.6.6 Postgres: 11.5

database.yml:

production:
  adapter: postgresql
  encoding: utf8
  database: <%= ENV['DB_NAME'] %>
  username: <%= ENV['DB_USERNAME'] %>
  password: <%= ENV['DB_PASSWORD'] %>
  host: <%= ENV['DB_HOSTNAME'] %>
  port: <%= ENV['DB_PORT'] %>
  pool: 25

1 Ответ

1 голос
/ 25 мая 2020

Попробуйте использовать это, чтобы иметь общие значения по умолчанию, а затем, в зависимости от env, иметь индивидуальные значения для других сред, которые могут быть основаны на переменных среды:

default: &default
  adapter:  postgresql
  encoding: unicode
  port:     <%= ENV.fetch("POSTGRESQL_PORT", "5432") %>
  pool:     <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV['POSTGRESQL_USER_NAME'] %>
  password: <%= ENV.fetch("POSTGRESQL_PASSWORD", "somepassword") %>
  host:     <%= ENV['POSTGRESQL_HOST'] %>

development:
  <<: *default
  database: <%= ENV['POSTGRESQL_DB'] %>-development
  host: db

production:
  <<: *default
  database: <%= ENV['POSTGRESQL_DB'] %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...