summaryrefslogtreecommitdiff
path: root/config/initializers/sidekiq.rb
diff options
context:
space:
mode:
authorQingyu Zhao <qzhao@gitlab.com>2019-08-31 00:05:04 +1000
committerQingyu Zhao <qzhao@gitlab.com>2019-09-17 18:07:30 +1000
commitd7b03e28a77f40ed51c99c3668981999db27e6d1 (patch)
treedc3493327fffd4eeb54db5829e856f5fe44a0284 /config/initializers/sidekiq.rb
parent3c372d87a701b600f42fccbf4707eebd67ff7cac (diff)
downloadgitlab-ce-59754-independent-sidekiq-memory-killer.tar.gz
Add Sidekiq daemon memory killer59754-independent-sidekiq-memory-killer
When enable daemon memory killer, old memory killer will be disabled The daemon memory killer(Gitlab::SidekiqDaemon::MemoryKiller) - is to replace existing Gitlab::SidekiqMiddleware::MemoryKiller - allows Sidekiq memory balloon reasonably, within given time limit - reduces monitoring overhead(when there are many small jobs) - monitors Sidekiq memory timely(for long running jobs) - respects Worker sidekiq_options `memory_killer_memory_growth_kb` - respects Worker sidekiq_options `max_memory_killer_memory_growth_kb` Update document on Sidekiq memory killer ENV variables
Diffstat (limited to 'config/initializers/sidekiq.rb')
-rw-r--r--config/initializers/sidekiq.rb14
1 files changed, 10 insertions, 4 deletions
diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb
index 20f31ff6810..e3505579204 100644
--- a/config/initializers/sidekiq.rb
+++ b/config/initializers/sidekiq.rb
@@ -28,16 +28,18 @@ if Rails.env.development?
end
enable_json_logs = Gitlab.config.sidekiq.log_format == 'json'
-enable_sidekiq_monitor = ENV.fetch("SIDEKIQ_MONITOR_WORKER", 0).to_i.nonzero?
+enable_sidekiq_memory_killer = ENV['SIDEKIQ_MEMORY_KILLER_MAX_RSS'].to_i.nonzero?
+use_sidekiq_daemon_memory_killer = ENV["SIDEKIQ_DAEMON_MEMORY_KILLER"].to_i.nonzero?
+use_sidekiq_legacy_memory_killer = !use_sidekiq_daemon_memory_killer
Sidekiq.configure_server do |config|
config.redis = queues_config_hash
config.server_middleware do |chain|
- chain.add Gitlab::SidekiqMiddleware::Monitor if enable_sidekiq_monitor
+ chain.add Gitlab::SidekiqMiddleware::Monitor
chain.add Gitlab::SidekiqMiddleware::Metrics if Settings.monitoring.sidekiq_exporter
chain.add Gitlab::SidekiqMiddleware::ArgumentsLogger if ENV['SIDEKIQ_LOG_ARGUMENTS'] && !enable_json_logs
- chain.add Gitlab::SidekiqMiddleware::MemoryKiller if ENV['SIDEKIQ_MEMORY_KILLER_MAX_RSS']
+ chain.add Gitlab::SidekiqMiddleware::MemoryKiller if enable_sidekiq_memory_killer && use_sidekiq_legacy_memory_killer
chain.add Gitlab::SidekiqMiddleware::RequestStoreMiddleware unless ENV['SIDEKIQ_REQUEST_STORE'] == '0'
chain.add Gitlab::SidekiqMiddleware::BatchLoader
chain.add Gitlab::SidekiqMiddleware::CorrelationLogger
@@ -60,7 +62,11 @@ Sidekiq.configure_server do |config|
# Sidekiq (e.g. in an initializer).
ActiveRecord::Base.clear_all_connections!
- Gitlab::SidekiqDaemon::Monitor.instance.start if enable_sidekiq_monitor
+ # Start monitor to track running jobs. By default, cancel job is not enabled
+ # To cancel job, it requires `SIDEKIQ_MONITOR_WORKER=1` to enable notification channel
+ Gitlab::SidekiqDaemon::Monitor.instance.start
+
+ Gitlab::SidekiqDaemon::MemoryKiller.instance.start if enable_sidekiq_memory_killer && use_sidekiq_daemon_memory_killer
end
if enable_reliable_fetch?