mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-09 04:36:11 +10:00
Add SIDEKIQ_MEMORY_KILLER_SHUTDOWN_SIGNAL env var
It looks like SIGTERM may not be enough to shut down a Sidekiq process when its RSS has gotten too big. This change will allow us to experiment with sending SIGKILL instead of SIGTERM to Sidekiq processes on gitlab.com.
This commit is contained in:
committed by
Dmitriy Zaporozhets
parent
754f672980
commit
87dd2dca60
@@ -43,6 +43,10 @@ v 7.10.0 (unreleased)
|
||||
- Prevent sending empty messages to HipChat (Chulki Lee)
|
||||
- Improve UI for mobile phones on dashboard and project pages
|
||||
- Add room notification and message color option for HipChat
|
||||
- Allow to use non-ASCII letters and dashes in project and namespace name. (Jakub Jirutka)
|
||||
- Add footnotes support to Markdown (Guillaume Delbergue)
|
||||
- Add current_sign_in_at to UserFull REST api.
|
||||
- Make Sidekiq MemoryKiller shutdown signal configurable
|
||||
|
||||
v 7.10.2
|
||||
- Fix CI links on MR page
|
||||
|
||||
@@ -36,3 +36,5 @@ The MemoryKiller is controlled using environment variables.
|
||||
Existing jobs get 30 seconds to finish. After that, the MemoryKiller tells
|
||||
Sidekiq to shut down, and an external supervision mechanism (e.g. Runit) must
|
||||
restart Sidekiq.
|
||||
- `SIDEKIQ_MEMORY_KILLER_SHUTDOWN_SIGNAL`: defaults to 'SIGTERM'. The name of
|
||||
the final signal sent to the Sidekiq process when we want it to shut down.
|
||||
|
||||
@@ -7,6 +7,7 @@ module Gitlab
|
||||
GRACE_TIME = (ENV['SIDEKIQ_MEMORY_KILLER_GRACE_TIME'] || 15 * 60).to_s.to_i
|
||||
# Wait 30 seconds for running jobs to finish during graceful shutdown
|
||||
SHUTDOWN_WAIT = (ENV['SIDEKIQ_MEMORY_KILLER_SHUTDOWN_WAIT'] || 30).to_s.to_i
|
||||
SHUTDOWN_SIGNAL = (ENV['SIDEKIQ_MEMORY_KILLER_SHUTDOWN_SIGNAL'] || 'SIGTERM').to_s
|
||||
|
||||
# Create a mutex used to ensure there will be only one thread waiting to
|
||||
# shut Sidekiq down
|
||||
@@ -24,19 +25,19 @@ module Gitlab
|
||||
|
||||
Sidekiq.logger.warn "current RSS #{current_rss} exceeds maximum RSS "\
|
||||
"#{MAX_RSS}"
|
||||
Sidekiq.logger.warn "spawned thread that will shut down PID "\
|
||||
"#{Process.pid} in #{GRACE_TIME} seconds"
|
||||
Sidekiq.logger.warn "this thread will shut down PID #{Process.pid} "\
|
||||
"in #{GRACE_TIME} seconds"
|
||||
sleep(GRACE_TIME)
|
||||
|
||||
Sidekiq.logger.warn "sending SIGUSR1 to PID #{Process.pid}"
|
||||
Process.kill('SIGUSR1', Process.pid)
|
||||
|
||||
Sidekiq.logger.warn "waiting #{SHUTDOWN_WAIT} seconds before sending "\
|
||||
"SIGTERM to PID #{Process.pid}"
|
||||
"#{SHUTDOWN_SIGNAL} to PID #{Process.pid}"
|
||||
sleep(SHUTDOWN_WAIT)
|
||||
|
||||
Sidekiq.logger.warn "sending SIGTERM to PID #{Process.pid}"
|
||||
Process.kill('SIGTERM', Process.pid)
|
||||
Sidekiq.logger.warn "sending #{SHUTDOWN_SIGNAL} to PID #{Process.pid}"
|
||||
Process.kill(SHUTDOWN_SIGNAL, Process.pid)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user