2015-10-01 8 views
2

У меня проблема с редизацией redis, которую я не могу понять. Мастер продолжает бить клиент-выход-буфер-лимит.Редизайн Redis и клиент-выход-буфер-лимит

Master Config:

# redis-cli -p 6380 config get client-output-buffer-limit 
1) "client-output-buffer-limit" 
2) "normal 0 0 0 slave 536870912 536870912 0 pubsub 33554432 8388608 60" 

Master Вход:

Client id=3014598 addr={{MASTER}} fd=6 name= age=217 idle=217 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=3723 oll=4806 omem=581952061 events=rw cmd=psync scheduled to be closed ASAP for overcoming of output buffer limits. 

Master информация:

# redis-cli -p 6380 info 
role:master 
connected_slaves:1 
slave0:ip={{SLAVE_IP}},port=6380,state=wait_bgsave,offset=0,lag=0 // stays on wait_bgsave 

Ведомый информация:

role:slave 
master_host:{{MASTER_IP}} 
master_port:6380 
master_link_status:down 
master_last_io_seconds_ago:-1 
master_sync_in_progress:1 

Redis версия: 3.0.2

Размер базы данных: ~ 21GB Master является 30GB Ram EC2 экземпляр Ведомый является экземпляром 60GB Ram EC2

Раб однако мастер всегда отключается, независимо от того, насколько высокий я устанавливаю буферы. Мастер почти всегда находится в состоянии wait_bgsave.

Может ли кто-нибудь объяснить, почему это может произойти?

+1

Возможно, возникла проблема при попытке создать файл дампа RDB для репликации. Для создания файла может не хватить ОЗУ. Вы можете проверить это, выпустив bgsave на redis-cli и посмотреть, если он будет успешным. И для обходного пути вы можете попробовать новую бездисковую репликацию, для этого может потребоваться меньше оперативной памяти (хотя я никогда не нашел никаких документов, говорящих об этом) http://redis.io/topics/replication#diskless-replication –

+0

Создает файл RDB успешно (я смог перезагрузить основную базу данных из RDB.) Сегодня я попробую бездисковую репликацию и посмотрю, что это делает. Спасибо за информацию! – Daniel

+0

@ LiviuCostea Вы абсолютно правы, бездисковая репликация сделала это! Огромное спасибо. Если вы опубликуете свой комментарий в качестве ответа, я соглашусь с ним. Я действительно хочу знать, почему репликация диска не работала, но главный сервер имеет ~ 10 ГБ свободного бара, а slave - на 60 ГБ. Очень странно – Daniel

ответ

3

Возможно, возникла проблема при попытке создать файл дампа RDB для репликации. Возможно, для создания файла может не хватить ОЗУ, или, возможно, есть peoblem с ведомым устройством, которое не может быстро считывать входящие данные, чтобы отключиться.
Вы можете проверить это, выпустив bgsave на redis-cli и посмотреть, если он является успешным, а также проверить redis.conf для части клиент-выход-буфер. И для обходного пути вы можете попробовать новый diskless replication, для этого может потребоваться меньше оперативной памяти (хотя я никогда не нашел никаких документов, говорящих об этом).