• Stars
    star
    12,059
  • Rank 2,550 (Top 0.06 %)
  • Language
    Ruby
  • Created over 12 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Simple, efficient background processing for Ruby

Sidekiq

Gem Version Build

Simple, efficient background processing for Ruby.

Sidekiq uses threads to handle many jobs at the same time in the same process. It does not require Rails but will integrate tightly with Rails to make background processing dead simple.

Requirements

  • Redis: Redis 6.2+ or Dragonfly 1.13+
  • Ruby: MRI 2.7+ or JRuby 9.3+.

Sidekiq 7.0 supports Rails 6.0+ but does not require it. As of 7.2, Sidekiq supports Dragonfly as an alternative to Redis for data storage.

Installation

bundle add sidekiq

Getting Started

See the Getting Started wiki page and follow the simple setup process. You can watch this YouTube playlist to learn all about Sidekiq and see its features in action. Here's the Web UI:

Web UI

Performance

The benchmark in bin/sidekiqload creates 500,000 no-op jobs and drains them as fast as possible, assuming a fixed Redis network latency of 1ms. This requires a lot of Redis network I/O and JSON parsing. This benchmark is IO-bound so we increase the concurrency to 25. If your application is sending lots of emails or performing other network-intensive work, you could see a similar benefit but be careful not to saturate the CPU.

Version Time to process 500k jobs Throughput (jobs/sec) Ruby Concurrency Job Type
Sidekiq 7.0.3 21.3 sec 23,500 3.2.0+yjit 30 Sidekiq::Job
Sidekiq 7.0.3 33.8 sec 14,700 3.2.0+yjit 30 ActiveJob 7.0.4
Sidekiq 7.0.3 23.5 sec 21,300 3.2.0 30 Sidekiq::Job
Sidekiq 7.0.3 46.5 sec 10,700 3.2.0 30 ActiveJob 7.0.4
Sidekiq 7.0.3 23.0 sec 21,700 2.7.5 30 Sidekiq::Job
Sidekiq 7.0.3 46.5 sec 10,850 2.7.5 30 ActiveJob 7.0.4

Most of Sidekiq's overhead is Redis network I/O. ActiveJob adds a notable amount of CPU overhead due to argument deserialization and callbacks. Concurrency of 30 was determined experimentally to maximize one CPU without saturating it.

Want to Upgrade?

Use bundle up sidekiq to upgrade Sidekiq and all its dependencies. Upgrade notes between each major version can be found in the docs/ directory.

I also sell Sidekiq Pro and Sidekiq Enterprise, extensions to Sidekiq which provide more features, a commercial-friendly license and allow you to support high quality open source development all at the same time. Please see the Sidekiq homepage for more detail.

Problems?

Please do not directly email any Sidekiq committers with questions or problems. A community is best served when discussions are held in public.

If you have a problem, please review the FAQ and Troubleshooting wiki pages. Searching the issues for your problem is also a good idea.

Sidekiq Pro and Sidekiq Enterprise customers get private email support. You can purchase at https://sidekiq.org; email [email protected] for help.

Useful resources:

  • Product documentation is in the wiki.
  • Occasional announcements are made to the @sidekiq Mastodon account.
  • The Sidekiq tag on Stack Overflow has lots of useful Q & A.

Every Friday morning is Sidekiq office hour: I video chat and answer questions. See the Sidekiq support page for details.

Contributing

Please see the contributing guidelines.

License

Please see LICENSE.txt for licensing details. The license for Sidekiq Pro and Sidekiq Enterprise can be found in COMM-LICENSE.txt.

Author

Mike Perham, @getajobmike / @sidekiq, https://www.mikeperham.com / https://www.contribsys.com

More Repositories

1

inspeqtor

Monitor your application infrastructure!
Go
1,659
star
2

connection_pool

Generic connection pooling for Ruby
Ruby
1,596
star
3

girl_friday

Have a task you want to get done but don't want to do it yourself? Give it to girl_friday!
Ruby
606
star
4

rack-fiber_pool

Rack middleware to execute each request in a Fiber
Ruby
244
star
5

bayes_motel

Multi-variate Bayesian classification engine
Ruby
190
star
6

evented

Your source for event-drivenness!
Ruby
172
star
7

phat

Asynchronous Rails!
Ruby
95
star
8

em_postgresql

ActiveRecord driver for Postgresql with EventMachine
Ruby
66
star
9

inspeqtor-pro

Modern service monitoring, business edition.
Go
52
star
10

kuiq

Sidekiq desktop app
Ruby
48
star
11

politics

Utilities and Algorithms for Distributed Processing.
Ruby
47
star
12

qanat

Fiber-based, highly concurrent MQ processor for Ruby
Ruby
39
star
13

chrono.js

Application metrics, webscale!
JavaScript
22
star
14

bloaty_mcbloatface

"Oh my, you've put on some weight..."
Ruby
12
star
15

phony_baloney

Create fake servers for testing purposes
Ruby
10
star
16

acting_lessons

Abusing Rubinius's Actors for fun and profit
Ruby
10
star
17

gobox

How to use Golang's NaCl crypto API
Go
10
star
18

breakout

The classic Breakout game
Ruby
9
star
19

dotfiles

my dotfiles
Shell
7
star
20

switch_redis

Ruby
7
star
21

discontent

The forum for terrible people
Ruby
7
star
22

blog

My blargh!
HTML
7
star
23

sidekiq-websockets

Ruby
7
star
24

dotenv

Load contents of .env into child processes
Go
6
star
25

resque-client.go

Resque worker/client, written in Go
Go
6
star
26

contribsys.com

contribsys.com
CSS
5
star
27

edistuff

EDI parser and generation code
Java
5
star
28

queso

Query anything!
Ruby
5
star
29

gem_dir

Adds the 'gem dir' command to RubyGems to display the root directory of a given gem.
Ruby
4
star
30

tracknowledge

Race Tracks Galore!
Ruby
4
star
31

aoc2016

Advent of Code 2016
Ruby
4
star
32

right_aws

RightScale's right_aws 1.10.0 gem with fixes
Ruby
3
star
33

minesweeper

Minesweeper for MacRuby
3
star
34

docdb_shootout

Document-oriented database comparision
Ruby
3
star
35

news_flash

Show your users the latest news
Ruby
2
star
36

slice

My slice configuration
Ruby
1
star
37

perham.net

HTML
1
star