lsyncd - ПЕРЕПОЛНЕНИЕ в очереди событий - Решение состоит в настройке fs.inotify.max_queued_events - PullRequest
0 голосов
/ 21 июня 2020

lsyncd - это фантастическая c альтернатива NFS или NAS для репликации файлов между вашими Linux хостами. Я обнаружил, что демон хорошо работает с большими Linux файловыми системами (многие файлы, от малого до большого, xfs, ext4, luks), но требует некоторой настройки sysctl по мере роста вашей файловой системы.

Этот «вопрос» является обратите внимание на себя, поэтому я всегда могу найти ответ, выполнив поиск при переполнении стека. Надеюсь, это поможет вам!

Проект Github: https://github.com/axkibe/lsyncd

Исключение в /var/log/lsyncd.log:

Thu Jun 18 17:48:52 2020 Normal: --- OVERFLOW in event queue ---
Thu Jun 18 17:48:52 2020 Normal: --- HUP signal, resetting ---
Thu Jun 18 17:48:52 2020 Normal: waiting for 1 more child processes.

1 Ответ

1 голос
/ 21 июня 2020

Решение, когда вы видите «ПЕРЕПОЛНЕНИЕ в очереди событий» в lsyncd.log

Из других баз знаний я научился настраивать max_user_watches , но также настраивая max_queued_events , Я исправил исключение OVERFLOW в очереди событий.

Временное решение сработало без перезапуска моего процесса lsyncd.

Я выбрал число 1000000 как произвольно большое. Значение по умолчанию для Ubuntu 18 - 16384.

Временное решение

Проверьте текущие значения настройки:

$ sysctl fs.inotify.max_queued_events
fs.inotify.max_queued_events = 16384
$ sysctl fs.inotify.max_user_watches
fs.inotify.max_user_watches = 8192

Обновите max_user_watches и max_queued_events через оболочку

sudo sysctl fs.inotify.max_user_watches=1000000
sudo sysctl fs.inotify.max_queued_events=1000000

Постоянное решение, сохраняется после перезагрузки

Обновите max_user_watches и max_queued_events в /etc/sysctl.conf

fs.inotify.max_user_watches=1000000
fs.inotify.max_queued_events=1000000

Lsyncd.conf Basi c Configuration

/etc/lsyncd/lsyncd.conf

settings {
    logfile = "/var/log/lsyncd.log",
    pidfile = "/var/run/lsyncd/lsyncd.pid",
    insist = true
}
sync {
   default.rsyncssh,
   source="/var/application/data",
   host="node2",
   excludeFrom="/etc/lsyncd/exclude",
   targetdir="/var/application/data",
   rsync = {
     archive = true,
     compress = false,
     whole_file = true
   },
   ssh = {
     port = 22
   }
}

Сведения о системе

Linux service1staging 5.0.0-36-generi c # 39 ~ 18.04.1-Ubuntu SMP Tue Nov 12 11:09:50 UT C 2019 x86_64 x86_64 x86_64 GNU / Linux

Ubuntu 18.04.4 LTS

lsyncd --version Версия: 2.1.6

...