Как BGREWRITEAOF может вернуть ERR?

388
Jacob Krall

Документация дляBGREWRITEAOF государств, которые BGREWRITEAOFвсегда возвращает строковое значение OK.

Ну вот, сегодня я отправил BGREWRITEAOFна свой редис-сервер 2.6.7 и получил (error) ERRв ответ.

maxmemoryэто 3G; appendonlyесть yes. Система имеет 4 ГБ оперативной памяти.

Что случилось?

1

1 ответ на вопрос

1
Jacob Krall

Фоновому потоку, отвечающему за перезапись AOF, не хватило памяти. Журнал выглядел примерно так, повторяясь каждые несколько сотен мс:

[2435] * Starting automatic rewriting of AOF on 302% growth [2435] # Can't rewrite append only file in background: fork: Cannot allocate memory 

Redis попал в цикл, в котором застрял фоновый поток, и BGREWRITEAOFне смог запустить новый. Я перезапустил сервер Redis так, как я его исправил, с несколькими секундами простоя.

Похожие вопросы