diff options
author | Qingyu Zhao <qzhao@gitlab.com> | 2019-08-31 00:05:04 +1000 |
---|---|---|
committer | Qingyu Zhao <qzhao@gitlab.com> | 2019-09-17 18:07:30 +1000 |
commit | d7b03e28a77f40ed51c99c3668981999db27e6d1 (patch) | |
tree | dc3493327fffd4eeb54db5829e856f5fe44a0284 /config/initializers/sidekiq.rb | |
parent | 3c372d87a701b600f42fccbf4707eebd67ff7cac (diff) | |
download | gitlab-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.rb | 14 |
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? |