You're seeing the error
ERR max number of clients reached and running out of connections in your Heroku Redis instance.
Each of the Heroku Redis plans has a limit on the number of clients that can be connected to the Redis service.
For the smallest plans, such as the
hobby-dev plan (20 clients max.) or the
premium-0 plan (40 clients max.), an application can quickly reach the connection limit if it's not properly configured and it tries to open more connections than allowed.
The Heroku Redis metrics logs can help monitor the number of active connections for your instance. However, if your application is suddenly opening a high number of connections and hitting the limit, this behavior might not be reflected in the metrics if the connection spike is short enough that it isn't caught by the metric samples.
There are several things you can do to avoid hitting the limit of concurrent connected clients, such as using a connection pooler to reduce the number of connections or setting an appropriate connection timeout to close inappropriate idle connections.
You can also configure your Heroku Redis instance to automatically close idle connections after a specific timeout with the
heroku redis:timeout command.
The following blog post goes through the above recommendations on connection timeouts and connection pooling, and includes other useful tips: https://blog.heroku.com/real-world-redis-tips
With Redis 6, the max. number of clients reached errors can also present as
SSL_connect SYSCALL returned=5 errno=0 state=SSLv3/TLS write client hello, given that Redis is rejecting the connection before the SSL handshake can succeed.