oom command not allowed when used memory maxmemory что это
# Решение ошибок
# Перестала считаться статистика, что делать?
Мы приведём расшифровку некоторых ошибок в этом разделе. Если не можете починить их самостоятельно, напишите на support@keitaro.io.
# Ошибка MySQL server has gone away (или No file or directory)
Чтобы отключить, удалите или закомментируйте в конфиге /etc/my.cnf строку #wait_timeout=10
Затем перезагрузите MySQL.
# Не удаётся сохранить обновлённую лицензию
Появится примерно такой результат: Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk1 465Gi 407Gi 57Gi 88% 106779354 15058244 88% /
Предпоследняя колонка показывает % занятости места.
# Как избавиться от [IPv6] в отчетах
Для этого можно отключить IPv6 на сервере. Это заставит всех подключаться к серверу строго по IPv4.
Отредактируйте файл /etc/sysctl.conf
IPv6 отключается по запросу в техподдержку.
Cloudflare принудительно включает IPv6 на всех новых доменах, отключить эту опцию не так просто. Для отключения необходимы некоторые технические навыки и опыт работы с терминалом.
# При открытии админки Sorry. Some internal error/ See System log
В большинстве случаев такая ошибка говорит о недоступности сервера баз данных MariaDB. Чтобы выяснить, почему MariaDB не работает, нужно открыть журнал сообщений сервера. Последние сообщения увидите с помощью команды:
# Накапливаются команды в очереди
Чаще всего это происходит из-за неработающего сервера Redis. Чтобы выяснить, почему Redis не работает, необходим журнал сообщений сервера. Последние сообщения увидите после команды:
# Ошибка RedisException: OOM command not allowed when used memory > ‘maxmemory’, много 500 ошибок трекера
Не хватает памяти Redis для хранения уникальных токенов или кук. Решение:
Уменьшить период хранения уникальных токенов в Обслуживание > Настройки > Системные > Срок действия токена на лендинге.
Уменьшить срок уникальности в настройках кампаний: Настройки > Срок уникальности.
Проверяем, какая версия установки трекера в Обслуживание > Состояние. В строке Installation Method версия должна быть 2.21.0 и выше. Если версия ниже, нужно сделать апгрейд конфигурации сервера.
Если нет желания или возможности уменьшить сроки хранения, необходимо увеличить объём оперативной памяти на сервере. После этого запустить перенастройку параметров сервера:
# Сервер работает со сбоями, определить причину проблем не получается
Напишите в нашу службу поддержки. Чтобы ускорить нашу работу, пришлите, пожалуйста:
Скриншот статусной страницы трекера Обслуживание > Состояние.
# Connection attempt failed: SQLSTATE[08004] [1040] Too many connections
Превышено максимальное количество подключений, которое выставлено в конфигурации MySQL. Увеличьте значение max_connections в /etc/my.cnf и перезагрузите MySQL.
# Connection attempt failed: SQLSTATE[HY000] [2002] Can’t connect to local MySQL server through socket
База данных не выдерживает нагрузку. Зайдите в Настройки Keitaro, во вкладке Системные найдите опцию Хранилище обработчика трафика и выберите Файлы или Redis.
How do I resolve the error message «OOM command not allowed when used memory > ‘maxmemory'» for an Amazon ElastiCache Redis cluster node?
Last updated: 2021-04-13
Clients receive the error «OOM command not allowed when used memory ‘maxmemory'» when querying my Amazon ElastiCache for Redis cluster node. What does this error mean, and how do I fix it?
Short description
An OOM error occurs when an ElastiCache for Redis cluster can’t free any additional memory.
ElastiCache for Redis implements the maxmemory-policy that is set for the cache node’s parameter group when out of memory. The default value (volatile-lru) frees up memory by evicting keys with a set expiration time (TTL value). When a cache node doesn’t have any keys with a TTL value, it returns an error instead.
To resolve this error and to prevent clients from receiving OOM command not allowed error messages, do some combination of the following:
Note: The exact combination of these resolutions you use depends on your particular use case.
Resolution
Set a TTL value for keys on your node
You can set a TTL value for keys on your node. The default volatile-lru memory management policy then evicts expired keys to free up memory.
If you set a TTL value, you can also use the volatile-ttl setting. This setting makes space by evicting only those keys with an expire time set, starting with the keys with the lowest TTL.
Choose a different maxmemory-policy setting
Set the maxmemory-policy for a cache node parameter group to one of the following values:
Additionally, Redis 4.0 offers least frequently used (LFU) eviction modes:
Delete existing keys to free up memory
You can delete existing keys to free up memory using the DEL command. For more information, see Del key oom command not allowed when used memory maxmemory что это on the redis.io website.
Important: Deleting existing keys only temporarily resolves OOM errors. Be sure to also reconsider your memory management strategy.
Choose a larger node type
Each node type has a different amount of available memory. You cannot modify the amount of available memory on a node. However, you can use a larger node type with more storage.
Important: Using a larger node type only temporarily resolves OOM errors. Be sure to also rethink your memory management strategy.
Как отладить ошибку «Команда OOM не разрешена при использовании памяти> maxmemory» в Redis?
Я пытаюсь установить команду OOM при попытке установить ключ, maxmemory установлен на 500M с maxmemory-policy «volatile-lru», я устанавливаю TTL для каждой клавиши, отправленной на redis.
INFO возвращает: used_memory_human:809.22M
Здесь выводится информационная команда:
ОТВЕТЫ
Ответ 1
Вы случайно изменили количество баз данных? Если вы используете очень большое число, то первоначальное использование памяти может быть высоким
Ответ 2
Политика Redis maxmemory volatile-lru может не освободить достаточную память, если предел maxmemory уже используется энергонезависимыми ключами.
Ответ 3
Память управляется в конфиге. Таким образом, ваш экземпляр ограничен, поскольку он говорит. Вы можете либо посмотреть в свой redis.conf, либо с помощью функции CLI Tool «config get maxmemory», чтобы получить лимит.
Если вы управляете этим экземпляром Redis, вам нужно будет проконсультироваться и настроить файл конфигурации. Обычно искали в /etc/redis.conf или/etc/redis/redis.conf.
Если вы используете поставщика Redis, вам нужно будет с ними связаться с увеличением вашего лимита.
Ответ 4
В нашем случае maxmemory был установлен на большую сумму, а затем кто-то из команды изменил его на более низкую сумму после того, как данные уже были сохранены.
Ответ 5
Для такой проблемы рассмотрите возможность увеличения вашей maxmemory в файле redis.conf. Это помогло мне.
как maxmemory для меня было 21000000, тогда я изменил его на 31000000. Надеюсь, это поможет.
OOM command not allowed when used memory > ‘maxmemory’ #2746
Comments
mattshma commented Aug 27, 2015
We are running Redis 2.8.12 on Ubuntu precise (12.04.3 LTS), we use it as cache with configurations like:
But INFO output as follows:
and somethings I set key but I got OOM command not allowed when used memory > ‘maxmemory’ :
System memory usage:
The text was updated successfully, but these errors were encountered:
jaredye commented Aug 27, 2015
So we continuously cross the boundaries of the memory limit, by going over it, and then by evicting keys to return back under the limits.
If a command results in a lot of memory being used (like a big set intersection stored into a new key) for some time the memory limit can be surpassed by a noticeable amount.
from http://redis.io/topics/lru-cache
It may answer your first question.
qunchenmy commented Sep 7, 2015
I also happened this problem(redis v2.8.17),used_memory > maxmemory. The centos used a mount of swap space.
antirez commented Sep 7, 2015
The peak memory is > 20MB, so there are times where you use a lot more memory than the amount configured: for example during a very large pipeline Redis is unable to control the memory usage in the middle but only after the command execution. If you want to run with a such small memory limit, the operations you send to the server must also have a very small memory usage granularity.
Redis Out of Memory Exceptions, но у вас еще много памяти
При большой нагрузке наши Redis-подключения начнут отказываться за следующим исключением:
Проблема в том, что у нас осталось смехотворное количество свободной памяти. Мы используем Elasticache, поэтому искать легко:
Мы также можем подключиться к Elasticache через оболочку и увидеть, что память доступна, и нормально с ней взаимодействовать.
Это код, который я использовал как слой над информацией о подключении.
Затем я передаю этот уровень подключения своему «временному» менеджеру redis. Это код, который выдает ошибку OOM:
Поскольку у Elasticache более 7,5 ГБ свободной памяти, и поскольку я могу взаимодействовать с ним через оболочку, я предполагаю, что это либо библиотека StackExchange.Redis, либо проблема с управлением соединениями в моем коде.
.NET CORE 2.1 StackExchange.Redis версии 2.0.513
И последнее, что важно : когда возникает это исключение, оно повторяется. Перезапуск служб, взаимодействующих с Redis, ничего не дает. Проблема решается только перезапуском узлов Elasticache.
2 ответа
Redis может занимать в 2 раза больше памяти, чем требуется для хранения данных.
Если вы используете Redis в приложении с большим объемом операций записи, при сохранении файла RDB на диске или перезаписи журнала AOF Redis может использовать до 2 раз больше памяти, чем обычно. Используемая дополнительная память пропорциональна количеству страниц памяти, измененных при записи во время процесса сохранения, поэтому она часто пропорциональна количеству клавиш (или элементов агрегированного типа), к которым прикоснулись в это время. Убедитесь, что размер вашей памяти соответствует.
Итак, если данные, хранящиеся в Redis, занимают 8 ГБ места, при большой нагрузке Redis может потреблять 16 ГБ. Возможно, вам придется соответствующим образом настроить память, если это так.
Команда OOM не разрешена при использовании памяти> ‘maxmemory’