diff options
-rw-r--r-- | config/initializers/rbtrace.rb | 4 | ||||
-rw-r--r-- | config/unicorn.rb.example | 4 | ||||
-rw-r--r-- | doc/administration/troubleshooting/debug.md | 7 |
3 files changed, 13 insertions, 2 deletions
diff --git a/config/initializers/rbtrace.rb b/config/initializers/rbtrace.rb index 3a076c99ad0..c96e6985cda 100644 --- a/config/initializers/rbtrace.rb +++ b/config/initializers/rbtrace.rb @@ -1,3 +1,5 @@ # frozen_string_literal: true -require 'rbtrace' if ENV['ENABLE_RBTRACE'] +# rbtrace needs to be included after the unicorn worker forks. +# See the after_fork block in config/unicorn.rb.example. +require 'rbtrace' if ENV['ENABLE_RBTRACE'] && Sidekiq.server? diff --git a/config/unicorn.rb.example b/config/unicorn.rb.example index 220a0191160..8f2d842e5b6 100644 --- a/config/unicorn.rb.example +++ b/config/unicorn.rb.example @@ -124,6 +124,10 @@ before_fork do |server, worker| 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'] + # per-process listener ports for debugging/admin/migrations # addr = "127.0.0.1:#{9293 + worker.nr}" # server.listen(addr, :tries => -1, :delay => 5, :tcp_nopush => true) diff --git a/doc/administration/troubleshooting/debug.md b/doc/administration/troubleshooting/debug.md index 7ae4f7c1515..2902af8c782 100644 --- a/doc/administration/troubleshooting/debug.md +++ b/doc/administration/troubleshooting/debug.md @@ -77,7 +77,12 @@ and more. However, this is not enabled by default. To enable it, define the gitlab_rails['env'] = {"ENABLE_RBTRACE" => "1"} ``` -Then reconfigure the system and restart Unicorn and Sidekiq. +Then reconfigure the system and restart Unicorn and Sidekiq. To run this +in Omnibus, run as root: + +```ruby +/opt/gitlab/embedded/bin/ruby /opt/gitlab/embedded/bin/rbtrace +``` ## Common Problems |