"Недостаточно рабов, чтобы написать" в Google Memorystore (Redis)

У меня есть приложение Node.js, которое подписывается на тему Google PubSub, обрабатывает сообщения и помещает данные в экземпляр Redis, который ранее размещался на Kubernetes Engine. Это работало довольно хорошо, но я решил попробовать использовать Google Memorystore вместо Redis.

Некоторое время Memorystore работал нормально, но потом дела пошли плохо. Вчера мое приложение начало кидать NOREPLICAS Not enough good slaves to write исключений, и я ничего не мог сделать, чтобы Memorystore снова начал работать. В итоге я удалил экземпляр Memorystory и запустил новый. Теперь, около 4:00 утра, эта проблема снова началась, и около 4:30 утра все полностью сломалось.

Мой сетевой ввод и использование памяти отображаются нормально до тех пор, пока не начнутся эти ошибки (см. Рисунки ниже). Кроме того, ошибка, кажется, будет продолжаться вечно. Около 8 утра я выключил приложение, которое помещает данные в Memorystore, и проблема все еще остается. Я получил доступ к Memorystore через Redis-Cli, чтобы запустить FLUSHALL, но я просто получаю ту же ошибку, поэтому я даже не могу этого сделать. Сам экземпляр Memorystore продолжает показывать состояние "восстановления", после чего следует короткое время готовности (в котором все еще не удается выполнить запись), а затем снова "восстановление".

Итак, мои конкретные вопросы:

  1. Что вызывает NOREPLICAS Not enough good slaves to write ошибка? Я нахожу только эту ошибку, упомянутую в отчетах о проблемах Github, и обычно ответ "Мы работаем над исправлением этой ошибки". Мы будем благодарны за любую справочную информацию или советы о том, как избежать возникновения этой проблемы.
  2. Если я получаю эту ошибку, как мне заставить Memorystore корректно ее обработать? Учитывая характер приложения, вполне нормально, если это случается так часто, а некоторые данные теряются или у меня возникают простои. Однако сейчас, похоже, единственный способ решить проблему - это удалить экземпляр Memorystore.

Сетевой ввод-вывод объем памяти

Незначительное обновление: в 16:00, когда мое приложение было отключено в течение последних 8 часов, поэтому ничего не отправляло данные или не считывало данные из Memorystore, Memorystore наконец-то снова начал работать. По крайней мере, время безотказной работы начало расти, а память наконец-то стала плоской. Раньше время работы зависало каждые 30–60 секунд, как показано ниже. Несмотря на это, мои вопросы остаются в силе. Отмечу, что проблемы появились ровно в 4 часа утра и исчезли ровно в 4 часа дня. Я не уверен, что это полезная информация.

Обновление 2: испытав сегодня кучу проблем, я подумал, что добавлю некоторые журналы на случай, если это поможет. Я получаю этот журнал, повторяющийся весь день (даже при том, что ничто не связывается с redis).

A 1:S 20 May 10:02:39.244 # Server started, Redis version 3.2.11 A 1:S 20 May 10:02:39.858 # Error reply to PING from master: '-LOADING Redis is loading the dataset in memory' A 1:S 20 May 10:02:40.887 # Error reply to PING from master: '-LOADING Redis is loading the dataset in memory'

Как и этот:

A 1:S 20 May 10:03:09.501 # Server started, Redis version 3.2.11 A 1:S 20 May 10:03:16.412 * DB loaded from disk: 27.948 seconds A 1:S 20 May 10:03:16.412 * The server is now ready to accept connections on port 6379 A 1:signal-handler (1526810597) Received SIGTERM scheduling shutdown... A 1:S 20 May 10:03:17.916 # User requested shutdown... A 1:S 20 May 10:03:17.916 * Removing the pid file. A 1:S 20 May 10:03:17.917 # Redis is now ready to exit, bye bye...

0 ответов

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