Nodemon Error: System limit for number of file watchers reached
If you are using Linux, your project is hitting your system's file watchers limit
To fix this, on your terminal, try:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Error: EMFILE: too many open files, watch, unless I use sudo
I think I've found a solution:
- Set limits in
/etc/sysctl.conf
by adding:
fs.inotify.max_user_watches=524288
fs.inotify.max_user_instances=512
Open a new terminal or reload
sysctl.conf
variables withsudo sysctl --system
Run
yarn start
Everything should work fine now, hopefully. If it doesn't work try setting the limits higher.
Node.js and ulimit
I received this answer back from AWS support, and it works:
As for the container, every beanstalk instance, is a container with beanstalk software that will download your application upon startup, and modify system parameters depending on the environment type, and on your .ebextensions folder on your application.
So in order to achieve my suggestion, you will need to create a .ebextensions on your application, with the contents I have mentioned.
Just as a recap, please create a file named app.config inside your .ebextensions folder on your application, with the following (updated) content:
files:
"/etc/security/limits.conf":
mode: "00644"
owner: "root"
group: "root"
content: |
* soft nofile 20000
* hard nofile 20000
commands:
container_commands:
command: "ulimit -HSn 20000; service httpd restart;"
After you added this file, save the project and make a new deployment.
As for ssh, if you want to run a user with more limits, you can run the following command after you are logged in:
sudo su -c "ulimit -HSn 20000; su - ec2-user"
And that current session will have the limits you so desire.
For reference:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-services
https://unix.stackexchange.com/questions/29577/ulimit-difference-between-hard-and-soft-limits
http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/
How do I change the number of open files limit in Linux?
You could always try doing a ulimit -n 2048
. This will only reset the limit for your current shell and the number you specify must not exceed the hard limit
Each operating system has a different hard limit setup in a configuration file. For instance, the hard open file limit on Solaris can be set on boot from /etc/system.
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
On OS X, this same data must be set in /etc/sysctl.conf.
kern.maxfilesperproc=166384
kern.maxfiles=8192
Under Linux, these settings are often in /etc/security/limits.conf.
There are two kinds of limits:
- soft limits are simply the currently enforced limits
- hard limits mark the maximum value which cannot be exceeded by setting a soft limit
Soft limits could be set by any user while hard limits are changeable only by root.
Limits are a property of a process. They are inherited when a child process is created so system-wide limits should be set during the system initialization in init scripts and user limits should be set during user login for example by using pam_limits.
There are often defaults set when the machine boots. So, even though you may reset your ulimit in an individual shell, you may find that it resets back to the previous value on reboot. You may want to grep your boot scripts for the existence ulimit commands if you want to change the default.
Related Topics
Replace Key:Value from One File in Another File in Shellscript
How to Do "For Each" on Output from Find
"Sort Filename | Uniq" Does Not Work on Large Files
How to Couple Xargs with Pdftotext Converter to Search Inside Multiple PDF Files
How to Extract Every N Columns and Write into New Files
Quickest Way to Select/Copy Lines Containing String from Huge Txt.Gz File
Capturing User-Space Assembly with Ftrace and Kprobes (By Using Virtual Address Translation)
Forcing a Context Switch from The Userland on Linux
How Convert Address in Elf to Physical Address
Difference Between Posix Reliable Signals and Posix Real-Time Signals in Linux
Why Does The Stack Have to Be Page Aligned
Gnuplot-Like Program for Timeline Data
Oracle Query - Ora-01652: Unable to Extend Temp Segment But Only in Some Versions of Sql*Plus
Store Passwords Required by a Linux Daemon
Why Does The Same Executable Use Different Runpaths for Different Library Lookups