2014-01-13 3 views
5

У меня проблемы с моим приложением, установленным на Heroku. Он отлично работает на локальном env, но при развертывании в Heroku часто возникают ошибки приложений.ConnectionTimeoutError на Heroku с Postgres

Исключение в журналах являются: ActiveRecord :: ConnectionTimeoutError (не может получить соединение с базой данных в течение 5000 секунд (подождал 5.000 секунд))

контроллера и модели нет ничего особенного, довольно простые операции CRUD.

Приложение построено с помощью Rails 4, используя стандартную надстройку базы данных postgres для сервера heroku и сервер WEBrick.

Я попытался установить конфиг так:

#config/initializers/database_connection.rb 
Rails.application.config.after_initialize 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'] || 5 # seconds 
    config['pool']    = ENV['DB_POOL']  || 10 
    config['timeout']   = ENV['DB_TIMEOUT'] || 10 
    ActiveRecord::Base.establish_connection(config) 
    end 
end 

, но это не помогло.

У вас есть идеи, что может вам помочь?

ответ

1

Приведенный вами пример кода является законным. Вероятно, что-то вызывает проблему в вашей конфигурации конфигурации Heroku.

Ошибка, которую вы видите, указывает на то, что значение DB_POOL установлено слишком низко. Эта ошибка указывает на тайм-аут на сервере приложений, ожидающий проверки соединения из пула, а не обязательно сбой подключения. Возможно ли, что ваш DB_POOL установлен в 1 или низкое значение?

Вы также должны убедиться, что ваша конфигурация базы данных завершена, что у вас есть полное имя хоста, учетные данные и настройки конфигурации из конфигурации db по умолчанию. Вы можете выполнить следующую команду в консоли Heroku:

Rails.application.config.database_configuration[Rails.env] 

Существует что-то неправильно в настройках конфигурации Heroku, который вызывает этот тайм-аут.

+0

Спасибо за ваш ответ! Я проверю. – nataliastanko

5

Ваш пул БД не является проблемой. Это known rails issue. Если вы используете Rails 4.0.2, то претензия заключается в том, чтобы использовать мастер рельсов в вашем Gemfile. Я тоже испытываю эту проблему, однако я еще не пробовал это решение.

+3

Спасибо за это! Я просто обновился с 4.0.3 до 4.0.4, и это исправлено. Оставил меня еще один вопрос, но эй. – Evolve

+0

Моя вторичная ошибка: «NoMethodError: неопределенный метод« среда »для nil: NilClass, из-за чего герою не развернуть. Я обновил sass-rails с 4.0.1 до 4.0.3, и он исправил эту вторичную проблему. – Evolve

+6

Я на рельсах 4.1.1, и эта ошибка по-прежнему происходит по какой-либо очевидной причине ... – Daniel

Смежные вопросы