Ich bekam ActiveRecord::StatementInvalid (PG::Error: SSL error: decryption failed or bad record mac
Fehler, so folgte ich diesem guide about deploying Unicorn to Heroku und es scheint, es behoben zu haben. Jedoch unter caveats zeigt es, wie man Resque
für solch ein Setup konfiguriert - würde ich etwas ähnliches mit Sidekiq
tun müssen?Konfigurieren von Unicorn & Sidekiq korrekt auf Heroku
Beispielcode von Heroku:
before_fork do |server, worker|
...
# If you are using Redis but not Resque, change this
if defined?(Resque)
Resque.redis.quit
Rails.logger.info('Disconnected from Redis')
end
end
after_fork do |server, worker|
...
# If you are using Redis but not Resque, change this
if defined?(Resque)
Resque.redis = ENV['REDIS_URI']
Rails.logger.info('Connected to Redis')
end
end
Dies ist, was ich zur Zeit eingerichtet haben:
config/unicorn.rb
worker_processes 2
timeout 30
preload_app true
before_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end
defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
end
after_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
end
defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
end
config/initializers/sidekiq.rb
require 'sidekiq'
Sidekiq.configure_client do |config|
config.redis = { :size => 1 }
end
Sidekiq.configure_server do |config|
config.redis = { :size => 6 }
end
procfile
web: bundle exec unicorn -p $PORT -E $RACK_ENV -c ./config/unicorn.rb
worker: bundle exec sidekiq -e production -c 4
Das funktioniert für mich. Ich benutze Einhorn sowohl für die Entwicklung als auch für die Produktion, daher brauche ich keinen sidekiq.rb-Initialisierer, aber der Unicorn-Initialisierer ist ziemlich genau derselbe wie meiner. –
Ich sehe, dass Sie einen Namespace für den Sidekiq-Client konfiguriert haben. Bedeutet das, dass Sie einen anderen für den Sidekiq-Server konfiguriert haben? –
@steven_noble ja. Sie können es unter 'Sidekiq.configure_server' Block sehen. – siong1987