summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/initializers/rbtrace.rb4
-rw-r--r--config/unicorn.rb.example4
-rw-r--r--doc/administration/troubleshooting/debug.md7
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