Skip to content

Latest commit

 

History

History
70 lines (52 loc) · 2.9 KB

8.0-Upgrade.md

File metadata and controls

70 lines (52 loc) · 2.9 KB

Welcome to Sidekiq 8.0!

Sidekiq 8.0 contains major new features and some breaking changes which streamline proper operation of Sidekiq. Please read these notes carefully.

What's New

Job Profiling

Sidekiq 8.0 adds a new "Profile" tab which allows you to quickly and accurately profile an executing Sidekiq job in your production environment, making performance tuning your application code much easier. See the Profiling wiki page for details.

Web UI

Sidekiq::Web has been completely overhauled to improve security and ease of configuration. The implementation has been significantly refactored and the CSS rewritten from scratch to remove Twitter Bootstrap. This reduced CSS from 160KB to 16KB and average page render time from 55ms to 3ms. See pull request #6532 for more details. 3rd party Sidekiq Web extensions may look poor until they adapt to the new CSS.

Multi-Day Metrics

Previously Sidekiq stored 8 hours of job execution metrics. This has been increased to 72 hours, allowing you to see a full weekend of data and multi-day patterns. By aggregating the data, a 9x increase in visibility only requires 2x the storage in Redis.

Data Model Changes

  • The underlying class for Active Jobs has changed from ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper to Sidekiq::ActiveJob::Wrapper. This can save a significant amount of memory when creating a large number of Active Jobs.
  • The created_at and enqueued_at values within the job payload have changed type. Previously they were stored at epoch floats (1234567890.123456). They are now stored as epoch milliseconds (1234567890123) in order to avoid floating point and reduce size.
  • Sidekiq Pro's Batch data model has also changed, customers must run Sidekiq Pro 7.3.6+ for a few weeks to ensure forward data compatibility with 8.0.

Miscellaneous

  • Sidekiq now uses ActiveJob::Arguments to serialize CurrentAttributes, supporting Symbols, GlobalID, etc. This should be backwards compatible.
  • Reduce Sidekiq's default thread timeslice from 100ms to 50ms, which should help with processes which are overloaded with too much concurrency. Overloaded processes can see random TimeoutErrors.
  • Log output has been tweaked to be more colorful and easier to read.

Version Support

  • Redis 7.0+, Valkey 7.2+ or DragonflyDB 1.27+
  • Ruby 3.2+ is now required
  • Rails 7.0+ is now supported

Support is only guaranteed for the current and previous major versions. With the release of Sidekiq 8, Sidekiq 6.x is no longer supported. Sidekiq 6.0.0 was released in August 2019.

Upgrade

As always, please upgrade Sidekiq one major version at a time. If you are already running Sidekiq 7.x, then:

  • Upgrade to the latest Sidekiq 7.x.
gem 'sidekiq', '< 8'
  • Fix any deprecation warnings you see.
  • Upgrade to 8.x.
gem 'sidekiq', '< 9'