For an intelligent IDE, it is essential to be in the know about any external changes in files it is working with - e.g. changes made by VCS, or build tools, or code generators etc. For that reason, IntelliJ platform spins background process to monitor such changes. The method it uses is platform-specific, and on Linux, it is the Inotify facility.
Inotify requires a "watch handle" to be set for each directory in the project. Unfortunately, the default limit of watch handles may not be enough for reasonably sized projects, and reaching the limit will force IntelliJ platform to fall back to recursive scans of directory trees.
To prevent this situation it is recommended to increase the watches limit (to, say, 512K):
1. Add the following line to either /etc/sysctl.conf file or a new *.conf file (e.g. idea.conf) under /etc/sysctl.d/ directory:
2. Then run this command to apply the change:
And don't forget to restart your IDE.
Note: the watches limit is per-account setting. If there are other programs running under the same account which also uses Inotify the limit should be raised high enough to suit needs of all of them.
26 Comments
James Treacy
Hi - any idea where I'd find sysctl.conf in IntelliJ 10 (Community Edition) installed on Ubuntu?
Roman Shevchenko
/etc/sysctl.conf
It is a system file, not an IDEA one.
James Treacy
Whoops! Thank you
smarks@digisolutions.com
FYI: this solution does not seem to work under CentOS not sure what the correct fix is at this point.
smarks@digisolutions.com
OK, should have looked first, here's the procedure for CentoOS
Roman Shevchenko
Sorry, but what's the difference? You just increased the limit to over 5 million (5,242,881 instead of proposed 524,288). Is there any point to set the limit that high?
Alex Andrienko
Considering the following situation: 10 developers work on the working copies, mounted via sshfs from a single server. Don't ask me why, it's not my call.
Should I adjust this settings on developers' working stations and also on server with the value 10 times as big?
Roman Shevchenko
Though I've never tried it over sshfs but I'm pretty sure it won't work. Network-mounted FS don't produce file change notifications.
Arik Kfir
On Fedora, and I suspect other Linux OSes too, the correct solution is not to edit /etc/sysctl.conf but rather to create a new file in /etc/sysctl.d such as "/etc/sysctl.d/idea.conf" and place the config line there.
Roman Shevchenko
Sysctl.d is more for packages. It's ok to place user-configured settings in sysctl.conf.
Alex Andrienko
Speaking of packages, it would be nice to have one.
Meanwhile I'd also put the change into a separate file under /etc/sysctl.d .
Roman Shevchenko
http://youtrack.jetbrains.net/issue/IDEA-22750
I'm not telling not to do, just saying sysctl.conf is quite a correct way too.
Antti Kaihola
Also, at least on Fedora 23,
sysctl -p
doesn't reload the settings. You need to do this instead:Rajiv
In ubuntu 12+, you needn't edit the sysctl.conf file. Just do
sudo sysctl fs.inotify.max_user_watches=xxxxx
This updates the entry in /proc/sys/fs/inotify/max_user_watches but does not seem to modify the /etc/sysctl.conf file.
Roman Shevchenko
Right, but it will last only until reboot.
Rajiv
Yup. True that. Modified sysctl.conf (like I should have in the first place!) and it worked like a charm.
Thanks Roman.
JRo
I don't understand why it is necessary to set up this limit so high. And it not a good thing to give such a hight value as the must-do in a wiki !
I f you google a little bit, you'll find that the memory used by inotify is 540 * nb of watches on 32bit systems and so 1080 on 64bit ones. 524288 * 1080 = 566 231 040 => 540MiB only for that !
Stackoverflow suggest to count your files to give you a closer idae of how much you really need. I done wih only 92000 max watches on my 8Go source dir .
http://stackoverflow.com/questions/535768/what-is-a-reasonable-amount-of-inotify-watches-with-linux
http://askubuntu.com/questions/154255/how-can-i-tell-if-i-am-out-of-inotify-watches
Roman Shevchenko
The links provided clearly say that unused watches does not take any memory.
Jay Lee
For Arch Linux users, this solution won't work after version 207 according to this news. But the news also give a work around.
Following for the lazy people:
# vi /etc/sysctl.d/99-sysctl.conf
Then add the line mentioned above:
fs.inotify.max_user_watches = 524288
Or you can just:
# echo "fs.inotify.max_user_watches = 524288" >> /etc/sysctl.d/99-sysctl.conf
Don't forget:
# sysctl -p
Claus Conrad
While running
sysctl -p
on Arch Linux I got:sysctl: cannot open "/etc/sysctl.conf": No such file or directory
The correct command seems to be:
# sysctl -p /etc/sysctl.d/99-sysctl.conf
Mario Rezende
Arch Linux Wiki - sysctl: https://wiki.archlinux.org/index.php/Sysctl#Configuration
Matyas Albert Nagy
When writing settings in the
/etc/sysctl.d/*.conf
files, then you should load them via
sudo sysctl --system
Because
sudo sysctl -p
With no parameters is looking directly for the specific /etc/sysctl.conf file.
Have a nice day,
m
David McInnis
After version 207 SYSTEMD no longer reads from "/etc/sysctl.conf". It reads from "etc/systctl.d/##-sysctl.conf" Where ## means any number 01-99.
http://lists.freedesktop.org/archives/systemd-commits/2013-September/004309.html
-Dave
Peter Bittner
Similarly to what has been suggested above for Arch Linux, also on Debian systems (like Ubuntu) one should not modify
/etc/sysctl.conf
, but create a new file in/etc/sysctl.d/
. This will keep your system package upgradable.I've prepared a Gist for all the lazy ones: 60-jetbrains.conf (placed this file in
/etc/sysctl.d/
)Dmitry Ovchinnikov
Is there a way to disable the inotify warn in IntelliJ IDEA? In Manjaro Linux and IDEA 2016.1/2016.2 with the default max_user_watches settings everything is OK and I don't see any reason why I should change the setting.
Danny Suen
This post suggests two approaches to resolve the issues. The first one is to append a line in /etc/sysctl.conf, however that doesn't work for me! The second approach does work!