From e315dca6ceb5528a9b2c0f6d76261281a61a65b9 Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Tue, 31 Jul 2018 18:47:15 +0800 Subject: [PATCH] Copy important changes from unicorn.rb.example to unicorn.rb.example.development. Also remove unneeded configurations and update the comment accordingly. I think REE was long dead. --- config/unicorn.rb.example | 8 ++++---- config/unicorn.rb.example.development | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/config/unicorn.rb.example b/config/unicorn.rb.example index 8f2d842e5b6..020e9a00d87 100644 --- a/config/unicorn.rb.example +++ b/config/unicorn.rb.example @@ -67,11 +67,11 @@ pid "/home/git/gitlab/tmp/pids/unicorn.pid" stderr_path "/home/git/gitlab/log/unicorn.stderr.log" stdout_path "/home/git/gitlab/log/unicorn.stdout.log" -# combine Ruby 2.0.0dev or REE with "preload_app true" for memory savings -# http://rubyenterpriseedition.com/faq.html#adapt_apps_for_cow +# Save memory by sharing the application code among multiple Unicorn workers +# with "preload_app true". See: +# https://www.rubydoc.info/gems/unicorn/5.1.0/Unicorn%2FConfigurator:preload_app +# https://brandur.org/ruby-memory#copy-on-write preload_app true -GC.respond_to?(:copy_on_write_friendly=) and - GC.copy_on_write_friendly = true # Enable this flag to have unicorn test client connections by writing the # beginning of the HTTP headers before calling the application. This diff --git a/config/unicorn.rb.example.development b/config/unicorn.rb.example.development index 0df028648d1..5712549a66d 100644 --- a/config/unicorn.rb.example.development +++ b/config/unicorn.rb.example.development @@ -1,7 +1,15 @@ worker_processes 2 timeout 60 +preload_app true +check_client_connection false + before_fork do |server, worker| + # the following is highly recommended for Rails + "preload_app true" + # as there's no need for the master process to hold a connection + defined?(ActiveRecord::Base) and + ActiveRecord::Base.connection.disconnect! + if /darwin/ =~ RUBY_PLATFORM require 'fiddle' @@ -13,3 +21,12 @@ before_fork do |server, worker| end end +after_fork do |server, worker| + # Unicorn clears out signals before it forks, so rbtrace won't work + # unless it is enabled after the fork. + require 'rbtrace' if ENV['ENABLE_RBTRACE'] + + # the following is *required* for Rails + "preload_app true", + defined?(ActiveRecord::Base) and + ActiveRecord::Base.establish_connection +end