lsyncd - 事件队列中的溢出 - 解决方案是调整 fs.inotify.max_queued_events

Posted

技术标签:

【中文标题】lsyncd - 事件队列中的溢出 - 解决方案是调整 fs.inotify.max_queued_events【英文标题】:lsyncd - OVERFLOW in event queue - Solution is to tune fs.inotify.max_queued_events 【发布时间】:2020-10-11 13:50:41 【问题描述】:

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.

【问题讨论】:

哈!所以,我不是唯一这样使用 SO 的书呆子...... :) 【参考方案1】:

在 lsyncd.log 中看到“OVERFLOW in event queue”时的解决方法

从其他知识库中,我学会了调整 ma​​x_user_watches,但通过调整 ma​​x_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

通过 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 Tue Nov 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 - 事件队列中的溢出 - 解决方案是调整 fs.inotify.max_queued_events的主要内容,如果未能解决你的问题,请参考以下文章

文件同步工具 lsyncd2.1.6 安装使用问题

用lsyncd加速vim language server

sersync/lsyncd实时同步

高并发缓存队列防止溢出解决方案

实时同步lsyncd

实时同步lsyncd