Created
January 23, 2023 21:45
-
-
Save ka8725/245f35738392a669a66271282995c9ba to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# This file tells systemd how to run Sidekiq as a 24/7 long-running daemon. | |
# | |
# Customize this file based on your bundler location, app directory, etc. | |
# | |
# If you are going to run this as a user service (or you are going to use capistrano-sidekiq) | |
# Customize and copy this to ~/.config/systemd/user | |
# Then run: | |
# - systemctl --user enable sidekiq | |
# - systemctl --user {start,stop,restart} sidekiq | |
# | |
# If you are going to run this as a system service | |
# Customize and copy this into /usr/lib/systemd/system (CentOS) or /lib/systemd/system (Ubuntu). | |
# Then run: | |
# - systemctl enable sidekiq | |
# - systemctl {start,stop,restart} sidekiq | |
# | |
# This file corresponds to a single Sidekiq process. Add multiple copies | |
# to run multiple processes (sidekiq-1, sidekiq-2, etc). | |
# | |
# Use `journalctl -u sidekiq -rn 100` to view the last 100 lines of log output. | |
# | |
[Unit] | |
Description=sidekiq | |
# start us only once the network and logging subsystems are available, | |
# consider adding redis-server.service if Redis is local and systemd-managed. | |
After=syslog.target network.target | |
# See these pages for lots of options: | |
# | |
# https://www.freedesktop.org/software/systemd/man/systemd.service.html | |
# https://www.freedesktop.org/software/systemd/man/systemd.exec.html | |
# | |
# THOSE PAGES ARE CRITICAL FOR ANY LINUX DEVOPS WORK; read them multiple | |
# times! systemd is a critical tool for all developers to know and understand. | |
# | |
[Service] | |
# | |
# !!!! !!!! !!!! | |
# | |
# As of v6.0.6, Sidekiq automatically supports systemd's `Type=notify` and watchdog service | |
# monitoring. If you are using an earlier version of Sidekiq, change this to `Type=simple` | |
# and remove the `WatchdogSec` line. | |
# | |
# !!!! !!!! !!!! | |
# | |
TimeoutStartSec=180 | |
Type=notify | |
# If your Sidekiq process locks up, systemd's watchdog will restart it within seconds. | |
WatchdogSec=10 | |
WorkingDirectory=/home/app/app/current | |
# If you use rbenv: | |
# ExecStart=/bin/bash -lc 'exec /home/deploy/.rbenv/shims/bundle exec sidekiq -e production' | |
# If you use the system's ruby: | |
# ExecStart=/usr/local/bin/bundle exec sidekiq -e production | |
# If you use rvm in production without gemset and your ruby version is 2.6.5 | |
# ExecStart=/home/deploy/.rvm/gems/ruby-2.6.5/wrappers/bundle exec sidekiq -e production | |
# If you use rvm in production with gemset and your ruby version is 2.6.5 | |
# ExecStart=/home/deploy/.rvm/gems/ruby-2.6.5@gemset-name/wrappers/bundle exec sidekiq -e production | |
# If you use rvm in production with gemset and ruby version/gemset is specified in .ruby-version, | |
# .ruby-gemsetor or .rvmrc file in the working directory | |
ExecStart=/home/app/.rvm/bin/rvm in /home/app/app/current do bundle exec sidekiq -e production --logfile /home/app/app/shared/log/sidekiq.log | |
PIDFile=/home/app/app/shared/tmp/pids/sidekiq.pid | |
# Use `systemctl kill -s TSTP sidekiq` to quiet the Sidekiq process | |
ExecStop=/bin/kill -TSTP $MAINPID | |
# Uncomment this if you are going to use this as a system service | |
# if using as a user service then leave commented out, or you will get an error trying to start the service | |
# !!! Change this to your deploy user account if you are using this as a system service !!! | |
User=app | |
Group=app | |
UMask=0002 | |
# Greatly reduce Ruby memory fragmentation and heap usage | |
# https://www.mikeperham.com/2018/04/25/taming-rails-memory-bloat/ | |
Environment=MALLOC_ARENA_MAX=2 | |
# if we crash, restart | |
RestartSec=1 | |
Restart=always | |
# output goes to /var/log/syslog (Ubuntu) or /var/log/messages (CentOS) | |
StandardOutput=syslog | |
StandardError=syslog | |
# This will default to "bundler" if we don't specify it | |
SyslogIdentifier=sidekiq | |
[Install] | |
WantedBy=multi-user.target |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment