Recently, I noticed that changed files were not picked up by the Nextcloud client as fast as before. As a result I sometimes missed a file (or changes in a file) on my laptop that had been created on my desktop PC.
Today, I tried to run tail
and got the following message:
tail: inotify resources exhausted tail: inotify cannot be used, reverting to polling
This made me realise that the problem with the delayed client sync could be related to the inotify system for monitoring file changes.
It turns out there is a maximum to the number of inotify file watches:
sysctl fs.inotify
fs.inotify.max_queued_events = 16384 fs.inotify.max_user_instances = 128 fs.inotify.max_user_watches = 524288
Given that on my desktop the Nextcloud client syncs about 235 GB with my personal Nextcloud server and about 10 GB to two servers for work (including several Git repositories), I could imagine the 65536 watches is not enough. Indeed, manually increasing that number made file syncs more or less instantaneous again:
sysctl -n -w fs.inotify.max_user_watches=524288 sysctl fs.inotify
524288 fs.inotify.max_queued_events = 16384 fs.inotify.max_user_instances = 128 fs.inotify.max_user_watches = 524288
To make these changes permanent I added the following lines at the bottom of /etc/sysctl.conf
:
grep -A1 inotify /etc/sysctl.conf
# Increase the number of inotify watches so that the Nextcloud client # keeps syncing without delay fs.inotify.max_user_watches=524288
Side note: to apply the changes in the /etc/sysctl.conf
file use sudo sysctl -p
.