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

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

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

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

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

1 ответ

Фоновому потоку, отвечающему за перезапись 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 так, как я его исправил, с несколькими секундами простоя.

Другие вопросы по тегам