2013-11-26 6 views
1

Процесс Redis внезапно исчез.Процесс Редиса был убит ОС, есть ли ошибка?

Я пытался перезапустить его, но был убит еще раз (см ниже):

/usr/local/bin/redis-server /etc/redis.conf 
Killed 

И следующий не является содержание журнала, ни какого-либо исключения.

> [19724] 26 Nov 10:45:29.457 # Server started, Redis version 2.6.16 
> [19724] 26 Nov 10:46:13.172 * DB loaded from disk: 43.715 seconds 
> [19724] 26 Nov 10:46:13.182 * The server is now ready to accept 
> connections on port 6379 

dump.rdb файл 1.5GB, и есть ~ 5 Гб свободной оперативной памяти (что достаточно я думаю).

Я не использовал свободную оперативную память, уменьшенную с 5 до 0, когда Redis загружал DB. После того, как он был убит, свободная оперативная память снова стала 5 ГБ.

Почему 1.5GB dump.rdb требует 5 ГБ оперативной памяти, это ошибка? Как решить эту проблему? Я не хочу удалять текущий dump.rdp, есть некоторые важные данные.

Версия ОС: Ubuntu 12.04.1 LTS 64bit

Redis Версия: 2.6.16

ответ

3

Размер dump.rdb не 1: 1 с использованием оперативной памяти. См. Why a 500MB Redis dump.rdb file takes about 5.0GB memory?.

Редис, похоже, был убит OOM.

Это работа в Linux «ООМ убийцы», чтобы принести в жертву одну или несколько процессов для того, чтобы освободить память для системы, когда все остальное терпит неудачу. Это также приведет к уничтожению любого процесса, использующего тот же самый mm_struct, что и выбранный процесс , по очевидным причинам.

Если ваш набор данных Redis больше, чем доступная оперативная память, в вашем случае OOM попытается освободить память и убить ее. Вы можете либо отключить OOM на Redis:

Любой конкретный лидер процесс может быть иммунизацию против Oom убийцы , если значение его/Proc // oomadj устанавливается на постоянной OOM_DISABLE (в настоящее время определяется как -17).

... см. How to Configure the Linux Out-of-Memory Killer, но ваш сервер начнет заменять, если не хватает свободной памяти.

Таким образом, вы можете использовать такие инструменты, как redis-rdb-tool или rdb2csv, для анализа и экспорта ценных данных или для использования сервера с большим объемом памяти.

+0

Большое спасибо! Можно ли установить максимальный объем оперативной памяти, который может использовать сервер Redis? например 4ГБ. Если набор данных больше 4 ГБ, затем сохраните новые данные на диск. Redis известен как RAM + Disk, может быть, этот диск предназначен только для хранения данных дампа? – redice

+0

Да, вы можете установить максимальный объем оперативной памяти с параметрами 'maxmemory' ' maxmemory-policy' в файле конфигурации redis. – FGRibreau

+0

«Редис известен как RAM + Disk» не совсем точно, Redis - это только база данных памяти (весь набор данных должен жить в памяти), диск используется только для сохранения. – FGRibreau

Смежные вопросы