You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by Apache Wiki <wi...@apache.org> on 2011/09/16 10:17:30 UTC
[Hadoop Wiki] Update of "TooManyOpenFiles" by SteveLoughran
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Hadoop Wiki" for change notification.
The "TooManyOpenFiles" page has been changed by SteveLoughran:
http://wiki.apache.org/hadoop/TooManyOpenFiles
Comment:
document the too many open files problem and the two likely causes, quotas and limits on linux
New page:
= Too Many Open Files =
You can see this on Linux machines in client-side applications, server code or even in test runs.
It is caused by per-process limits on the number of files that a single user/process can have open, which was introduced in [[http://lkml.indiana.edu/hypermail/linux/kernel/0812.0/01183.html|2.6.27]. The default value, 128, was chosen because "that should be enough".
In Hadoop, it isn't. To fix this log in/su/ssh as root and edit {{{/etc/sysctl.conf}}}
add the line
{{{
fs.epoll.max_user_instances = 2048
}}}
Then reboot. Different numbers may be chosen.
There is an immediate shortcut: {{{echo 2048 > /proc/sys/fs/epoll/max_user_instances}}} . This setting will be lost on the next reboot, but is handy for trying out different values.
== limits.conf ==
Another limit on the number of files open may be the file {{{/etc/security/limits.conf}}}
It has a setting on the number of files a user or group may have, {{{nofile}}}.
To set this, as root edit {{{/etc/security/limits.conf}}}
and add a line such as
{{{
* soft nofile 2048
}}}
Then restart.
To see the current/default limits, run the command {{{ulimit -a}}}. This should print something like
{{{
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 4096
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
}}}
You can dynamically up the limits until the next reboot with the same command. Specifically
{{{
ulimit -n 8192
}}}
The updated value can then be printed
{{{
# ulimit -n
8192
}}}