Read more

How to fix parallel_tests with Redis on powerful machines

Daniel Straßner
March 21, 2019Software engineer at makandra GmbH

When you have a powerful machine with many CPU cores, you might run into an error like

ERR DB index is out of range (Redis::CommandError)
Illustration book lover

Growing Rails Applications in Practice

Check out our e-book. Learn to structure large Ruby on Rails codebases with the tools you already know and love.

  • Introduce design conventions for controllers and user-facing models
  • Create a system for growth
  • Build applications to last
Read more Show archive.org snapshot

This is because Redis defaults to at most 16 databases (0 to 15) and running tests in parallel might exceed that (your tests might run on databases 1..n or 2..(n+1)).

You can increase that limit:

  1. Get number of CPUs of your machine.

    nproc --all
    
  2. Open up Redis configuration file.

    sudo vim /etc/redis/redis.conf
    
  3. Find databases row and increase it, e.g. set to CPU count + 2:

    databases 18
    
  4. Save and close config file, then restart Redis:

    sudo service redis-server restart
    
  5. Confirm your configuration has been updated. The following command should return "OK".

    redis-cli select `nproc --all`
    
Posted by Daniel Straßner to makandra dev (2019-03-21 13:18)