Redis на noeviction разлогинивает половину юзеров под нагрузкой. Что делаем не так?
Рейтинг: 81% · 42 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
- RedisNinja
- Сообщения: 61
- Зарегистрирован: 15 май 2026, 01:22
Redis на noeviction разлогинивает половину юзеров под нагрузкой. Что делаем не так?
Держим в одном Redis и сессии, и кэш горячих запросов. На пике память упёрлась в maxmemory, политика allkeys-lru — и Redis начал вышвыривать в том числе ключи сессий. Получили волну разлогинов и злой саппорт. Как правильно разруливать?
✔ Лучший ответ сформирован автоматически — royalt
Подкину альтернативу по кэшу: после разнесения сессий и кэша попробуйте на кэш-инстансе allkeys-lfu вместо lru. Для горячих запросов LFU точнее: разовый ночной обход кравлера не вымывает реально частые ключи, как это бывает с LRU. И по сессиям — скользящий TTL удобно делать не отдельным EXPIRE, а через SET ... KEEPTTL плюс продление только если осталось меньше половины срока, иначе на…
- radiomaker
- Сообщения: 27
- Зарегистрирован: 24 май 2026, 00:35
Re: Redis на noeviction разлогинивает половину юзеров под нагрузкой. Что делаем не так?
Два варианта. Либо разнести на два инстанса/базы: кэш — allkeys-lru, сессии — отдельный с noeviction или volatile-lru. Либо ставить TTL только на кэш и юзать volatile-lru, тогда выселяются ТОЛЬКО ключи с TTL, а вечные сессии не трогаются.
Re: Redis на noeviction разлогинивает половину юзеров под нагрузкой. Что делаем не так?
Тогда volatile-lru начнёт возвращать OOM на запись, потому что выселять нечего. Поэтому в проде сессиям тоже ставят TTL (скользящий, продлевают на активность), а не делают вечными. Вечные ключи в Redis — это бомба замедленного действия.
Re: Redis на noeviction разлогинивает половину юзеров под нагрузкой. Что делаем не так?
И не забудьте что fork при RGB-снапшоте может временно сожрать ещё кучу памяти (copy-on-write). Видел как раз из-за bgsave прод улетал в OOM хотя по графикам было 75%. Оставляйте запас, не упирайтесь в потолок впритык.
Re: Redis на noeviction разлогинивает половину юзеров под нагрузкой. Что делаем не так?
✔ Лучший ответ — сформирован автоматически
Подкину альтернативу по кэшу: после разнесения сессий и кэша попробуйте на кэш-инстансе allkeys-lfu вместо lru. Для горячих запросов LFU точнее: разовый ночной обход кравлера не вымывает реально частые ключи, как это бывает с LRU. И по сессиям — скользящий TTL удобно делать не отдельным EXPIRE, а через SET ... KEEPTTL плюс продление только если осталось меньше половины срока, иначе на нагруженном API каждый запрос превращается в лишнюю запись.
Re: Redis на noeviction разлогинивает половину юзеров под нагрузкой. Что делаем не так?
@marianna, осторожно с формулировкой «отдельная база»: maxmemory и maxmemory-policy задаются на ВЕСЬ инстанс, на номер базы их повесить нельзя. Если вы сделали SELECT 1 на том же Redis, то политика у сессий и кэша по-прежнему общая, и при следующем пике разлогины вернутся. Разные политики — только отдельный процесс/контейнер со своим конфигом. Если у вас именно второй инстанс — тогда всё правильно, просто уточните.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
-
- 9800X3D греется до 80 под нагрузкой — это норма или у меня кривой монтаж?
8 ответов · 476 просмотров
-
- Container queries — наконец-то выкинул половину медиа-запросов, делюсь лайфхаком
9 ответов · 435 просмотров
-
-
-
Похожие запросы:
postgresql вместо redis для кэша стоит лиstrace почему программа висит и тормозитчем отличается deployment от pod в kubernetes простыми словамиrequests и limits в kubernetes как правильно задать ресурсы подуkubernetes pod crashloopbackoff почему падаетtarantool как база данных и кэш
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей