summaryrefslogtreecommitdiff
path: root/config/initializers/memory_watchdog.rb
diff options
context:
space:
mode:
Diffstat (limited to 'config/initializers/memory_watchdog.rb')
-rw-r--r--config/initializers/memory_watchdog.rb38
1 files changed, 27 insertions, 11 deletions
diff --git a/config/initializers/memory_watchdog.rb b/config/initializers/memory_watchdog.rb
index 82ad615ce25..ce8e5029e7a 100644
--- a/config/initializers/memory_watchdog.rb
+++ b/config/initializers/memory_watchdog.rb
@@ -4,17 +4,33 @@ return unless Gitlab::Runtime.application?
return unless Gitlab::Utils.to_boolean(ENV['GITLAB_MEMORY_WATCHDOG_ENABLED'])
Gitlab::Cluster::LifecycleEvents.on_worker_start do
- handler =
- if Gitlab::Runtime.puma?
- Gitlab::Memory::Watchdog::PumaHandler.new
- elsif Gitlab::Runtime.sidekiq?
- Gitlab::Memory::Watchdog::TermProcessHandler.new
- else
- Gitlab::Memory::Watchdog::NullHandler.instance
- end
+ watchdog = Gitlab::Memory::Watchdog.new
+ max_strikes = ENV.fetch('GITLAB_MEMWD_MAX_STRIKES', 5).to_i
+ sleep_time_seconds = ENV.fetch('GITLAB_MEMWD_SLEEP_TIME_SEC', 60).to_i
+ max_mem_growth = ENV.fetch('GITLAB_MEMWD_MAX_MEM_GROWTH', 3.0).to_f
+ max_heap_frag = ENV.fetch('GITLAB_MEMWD_MAX_HEAP_FRAG', 0.5).to_f
+
+ watchdog.configure do |config|
+ config.handler =
+ if Gitlab::Runtime.puma?
+ Gitlab::Memory::Watchdog::PumaHandler.new
+ elsif Gitlab::Runtime.sidekiq?
+ Gitlab::Memory::Watchdog::TermProcessHandler.new
+ else
+ Gitlab::Memory::Watchdog::NullHandler.instance
+ end
+
+ config.logger = Gitlab::AppLogger
+ config.sleep_time_seconds = sleep_time_seconds
+ # config.monitor.use MonitorClass, args*, max_strikes:, kwargs**, &block
+ config.monitors.use Gitlab::Memory::Watchdog::Monitor::HeapFragmentation,
+ max_heap_fragmentation: max_heap_frag,
+ max_strikes: max_strikes
+
+ config.monitors.use Gitlab::Memory::Watchdog::Monitor::UniqueMemoryGrowth,
+ max_mem_growth: max_mem_growth,
+ max_strikes: max_strikes
+ end
- watchdog = Gitlab::Memory::Watchdog.new(
- handler: handler, logger: Gitlab::AppLogger
- )
Gitlab::BackgroundTask.new(watchdog).start
end