lsyncd - 事件队列溢出 - 解决方案是调整 fs.inotify.max_queued_events
lsyncd - OVERFLOW in event queue - Solution is to tune fs.inotify.max_queued_events
lsyncd 是 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.
当您在 lsyncd.log
中看到“事件队列中溢出”时的解决方案
从其他知识库中,我学会了调整 max_user_watches,但同时也调整了 max_queued_events, 我更正了事件队列异常中的溢出。
临时解决方案无需重新启动我的 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
通过shell
同时更新max_user_watches和max_queued_events
sudo sysctl fs.inotify.max_user_watches=1000000
sudo sysctl fs.inotify.max_queued_events=1000000
永久解决方案,重启后仍然存在
更新 /etc/sysctl.conf
中的 max_user_watches 和 max_queued_events
fs.inotify.max_user_watches=1000000
fs.inotify.max_queued_events=1000000
Lsyncd.conf基本配置
/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-generic #39~18.04.1-Ubuntu SMP 11 月 12 日星期二 11:09:50 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Ubuntu 18.04.4 LTS
lsyncd --version
版本:2.1.6
lsyncd 是 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.
当您在 lsyncd.log
中看到“事件队列中溢出”时的解决方案从其他知识库中,我学会了调整 max_user_watches,但同时也调整了 max_queued_events, 我更正了事件队列异常中的溢出。
临时解决方案无需重新启动我的 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
通过shell
同时更新max_user_watches和max_queued_eventssudo sysctl fs.inotify.max_user_watches=1000000
sudo sysctl fs.inotify.max_queued_events=1000000
永久解决方案,重启后仍然存在
更新 /etc/sysctl.conf
中的 max_user_watches 和 max_queued_eventsfs.inotify.max_user_watches=1000000
fs.inotify.max_queued_events=1000000
Lsyncd.conf基本配置
/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-generic #39~18.04.1-Ubuntu SMP 11 月 12 日星期二 11:09:50 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Ubuntu 18.04.4 LTS
lsyncd --version 版本:2.1.6