Redis Pipe выходит из строя на Linux - PullRequest
0 голосов
/ 12 апреля 2019

Я использую библиотеку сельдерея с Python для параллельной обработки некоторых довольно больших наборов данных.Но ежедневный cronjob, который я запускаю, прерывается каждые два или три дня, выдавая следующую ошибку.

CRITICAL/MainProcess] Unrecoverable error: ResponseError('MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.',)

Журнал Redis выглядит как

7633:M 12 Apr 07:56:28.284 * 1 changes in 900 seconds. Saving...
7633:M 12 Apr 07:56:28.288 * Background saving started by pid 9530
9530:C 12 Apr 07:56:28.372 * DB saved on disk
9530:C 12 Apr 07:56:28.373 * RDB: 2 MB of memory used by copy-on-write
7633:M 12 Apr 07:56:28.388 * Background saving terminated with success
7633:M 12 Apr 08:01:29.065 * 10 changes in 300 seconds. Saving...
7633:M 12 Apr 08:01:29.065 # Can't save in background: fork: Cannot allocate memory
7633:M 12 Apr 08:01:35.083 * 10 changes in 300 seconds. Saving...
7633:M 12 Apr 08:01:35.088 * Background saving started by pid 9998
9998:C 12 Apr 08:01:35.099 * DB saved on disk
9998:C 12 Apr 08:01:35.101 * RDB: 2 MB of memory used by copy-on-write
7633:M 12 Apr 08:01:35.188 * Background saving terminated with success

Соответствующие конфигурации системы:

  • Python 3.6
  • Сельдерей 4.2.1
  • Redis Server и CLI 4.0.9
  • Ubuntu 18.04 (Bionic)

Самое смешное, что точно такая же конфигурация и система работают на другом (разработка) сервер, а также еще один, работающий под управлением Ubuntu 16.04.Но производство один терпит неудачу.Обратите внимание, что я не большой специалист по сельдерею и редису, только что получил код, работающий после большого количества поисков в Google и после некоторых уроков.Поэтому, пожалуйста, постарайтесь сохранить шаги по устранению неполадок в относительно элементарной формеКроме того, когда я пингую redis-cli на оболочке, я получаю понг взамен, что говорит о том, что сервер работает.

1 Ответ

0 голосов
/ 12 апреля 2019

Похоже, у вас слишком мало памяти, вы видите журнал от 12 апреля: Msgstr "Невозможно сохранить в фоновом режиме: fork: невозможно выделить память". Похоже, что когда REDIS пытается сохранить моментальный снимок (см. здесь для получения дополнительной информации), операция завершается неудачей до момента, когда она не может восстановиться. Предполагая, что вы используете большие наборы данных, возможные решения могут быть:

  1. Если возможно, добавьте время истечения для данных, которые вам больше не нужны. Подробнее здесь .
  2. Увеличьте объем памяти, хотя, если вы постоянно добавляете данные, в какой-то момент они могут взорваться.
  3. Отключите постоянство, однако сбой записи моментального снимка, вероятно, является побочным продуктом нехватки памяти. Имейте в виду, что REDIS может выселять определенные ключи, что в некоторых случаях может быть нежелательно.
...