Created
July 14, 2016 19:54
-
-
Save anonymous/1a63dc3568bda86097b0822bd66b05f8 to your computer and use it in GitHub Desktop.
Puma Sidekiq Configuration
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
With the size: attribute in your configure_* blocks removed = | |
ERROR: heartbeat: ERR max number of clients reached | |
app[worker.1]: 3 TID-ormcs1tts ERROR: ERR max number of clients reached | |
with the size attribute = " Sidekiq seems to run normally but mailers not moving from in enqueued. | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
web: bundle exec puma -e production -C config/puma.rb | |
worker: bundle exec sidekiq -e production -C config/sidekiq.yml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Production - Envirorment | |
config.action_mailer.default_url_options = { :host => 'domain.herokuapp.com'} | |
Rails.application.routes.default_url_options[:host] = 'domain.herokuapp.com' | |
ActionMailer::Base.delivery_method = :smtp | |
config.action_mailer.perform_deliveries = true | |
config.action_mailer.raise_delivery_errors = false | |
config.action_mailer.default :charset => "utf-8" | |
config.action_mailer.smtp_settings = { | |
:port => '587', | |
:address => 'smtp.mandrillapp.com', | |
.... | |
} | |
config.action_controller.include_all_helpers = true | |
ActionMailer::Base.default :from => "App<no-reply@exapp.com>" | |
config.active_job.queue_name_prefix = "app" | |
config.active_job.queue_name_delimiter = "_" | |
Application. RB | |
config.active_job.queue_adapter = :sidekiq | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
workers Integer(ENV['WEB_CONCURRENCY'] || 2) | |
threads_count = Integer(ENV['MAX_THREADS'] || 1) | |
threads threads_count, threads_count | |
preload_app! | |
rackup DefaultRackup | |
port ENV['PORT'] || 3000 | |
environment ENV['RACK_ENV'] || 'development' | |
# Because we are using preload_app, an instance of our app is created by master process (calling our initializers) and then memory space | |
# is forked. So we should close DB connection in the master process to avoid connection leaks. | |
# https://github.com/puma/puma/issues/303 | |
# http://stackoverflow.com/questions/17903689/puma-cluster-configuration-on-heroku | |
# http://www.rubydoc.info/gems/puma/2.14.0/Puma%2FDSL%3Abefore_fork | |
# Dont have to worry about Sidekiq's connection to Redis because connections are only created when needed. As long as we are not | |
# queuing workers when rails is booting, there will be no redis connections to disconnect, so it should be fine. | |
before_fork do | |
puts "Puma master process about to fork. Closing existing Active record connections." | |
ActiveRecord::Base.connection.disconnect! | |
end | |
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 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if Rails.env.production? | |
Sidekiq.configure_client do |config| | |
config.redis = { url: ENV['REDIS_URL'], size: 2 } | |
end | |
Sidekiq.configure_server do |config| | |
config.redis = { url: ENV['REDIS_URL'], size: 20 } | |
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
:verbose: true | |
development: | |
:concurrency: 5 | |
production: | |
:concurrency: 20 | |
:queues: | |
- default |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment