2017-03-13 16 views
2

私のsidekiq、heroku、redistogo、rails 4設定に問題があります。私はherokuに1人のdynoと1人のworkerを持っています。私はちょうど外部APIへのリクエストを得るためにワーカーを使用しています。ここでSidekiqエラー:サーバに接続できませんでした:そのようなファイルやディレクトリがありません

は、私は私のHerokuのログに取得エラーです:ここでは

app[worker.1]: could not connect to server: No such file or directory 
app[worker.1]: connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? 
app[worker.1]: Is the server running locally and accepting 

は、ここに私のconfig/initializers/sidekiq.rb

if Rails.env.production? 

    Sidekiq.configure_client do |config| 
    config.redis = { url: ENV['REDISTOGO_URL'] } 
    end 

    Sidekiq.configure_server do |config| 
    config.redis = { url: ENV['REDISTOGO_URL'] } 

    Rails.application.config.after_initialize do 
     Rails.logger.info("DB Connection Pool size for Sidekiq Server before disconnect is: #{ActiveRecord::Base.connection.pool.instance_variable_get('@size')}") 
     ActiveRecord::Base.connection_pool.disconnect! 

     ActiveSupport.on_load(:active_record) do 
     config = Rails.application.config.database_configuration[Rails.env] 
     config['reaping_frequency'] = ENV['DATABASE_REAP_FREQ'] || 10 # seconds 
     # config['pool'] = ENV['WORKER_DB_POOL_SIZE'] || Sidekiq.options[:concurrency] 
     config['pool'] = 16 
     ActiveRecord::Base.establish_connection(config) 

     Rails.logger.info("DB Connection Pool size for Sidekiq Server is now: #{ActiveRecord::Base.connection.pool.instance_variable_get('@size')}") 
     end 
    end 
    end 

end 

であるここに私のProcfile

web: bundle exec puma -C config/puma.rb 
worker: bundle exec sidekiq -e production -C config/sidekiq.yml 

は私config/sidekiq.yml

ですここで
development: 
    :concurrency: 5 
production: 
    :concurrency: 20 
:queues: 
    - default 

ここに私のconfig/initializers/redis.rb

uri = URI.parse(ENV["REDISTOGO_URL"]) 
REDIS = Redis.new(:url => uri) 

はPostgreSQLサーバではないSidekiqであなたのHerokuのログ、その与える誤差を1として私のconfig/puma.rb

workers Integer(ENV['WEB_CONCURRENCY'] || 2) 
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 1) 
threads threads_count, threads_count 

preload_app! 

rackup  DefaultRackup 
port  ENV['PORT']  || 3000 
environment ENV['RACK_ENV'] || 'development' 

before_fork do 
    puts "Puma master process about to fork. Closing existing Active record connections." 
    ActiveRecord::Base.connection.disconnect! 
end 

on_worker_boot do 
    ActiveRecord::Base.establish_connection 
end 
+0

これまでのところ、私は 'Rails.application.config.after_initialize do'ブロックを削除して、プロダクションの同時実行性を5に変更して動作しています。 –

+1

これは、アプリケーションがpostgresサーバーに接続できないようです。私が考えるサイドキック問題ではない。 herokuにpostgresサーバーを追加しましたか? – DroidNoob

答えて

2

です。

だから、まずそれを修正する必要があります。

関連する問題