We help IT Professionals succeed at work.

open file descriptors

Buffon asked
Medium Priority
Last Modified: 2013-12-16
on Linux server how do I find what is the maximum number of open file descriptors per JVM process and how do I change it and what is the recommended number? so its 3 questions :)
Watch Question


I am not sure how to find the maximum number of open file descriptors per JVM.  On Linux, the system wide file descriptor can be found:

# cat /proc/sys/fs/file-max

to change it
# echo "65535" > /proc/sys/fs/file-max

to check how many file descriptor being used:
# cat /proc/sys/fs/file-nr
1400    119     65535
   |           |          |__ maximum number of file descriptors allowed on the system
   |           |    
   |           |__ total free allocated file descriptors
   |__  total allocated file descriptors

to show the open file descriptor for processes:
# lsof


thanks for reply, but I already know about max for wide system, I really need it per process (I think its the same for jvm process) and not wide system :(
by the way what is "total free allocated file descriptors"?
Top Expert 2005

The default fd limit for any process in linux is 1024
You can verify it: ulimit -n
You can change: ulimit -n 10240 # but increasing the limit is allowed only to root user.
If You want increase it system wide - You would have to do two things
- put the command in some early init script (like /etc/rc.d/rc)
- increase it for each user that logs into the system, it's /etc/security/limits.conf - add line like
*              -       nofile          10240


is it recommended to increase it? what is the impact on system?
Top Expert 2005

The limit there is mainly for security reason(as You already know there is limited number of FDs in whole system), but it also helps debugging leaking applications(the other question ;).
It's not recommended to increase this limit globally (as I suggested above) - but if application needs more than 1024 or leaks(then it's temporarty sollution) I would advise to increase the limit for this application only.
In the latter case the application(daemon) have to be initially run as root.


ok it runs as root and I have root access, so its not a problem. how do I increase this number only for this application?
Top Expert 2005

How the application is started?


through ssh, as root, java Server......
Top Expert 2005

Then simply create a script which will run the app (or maybe it's already script), and before running the app/java add
ulimit -n 10240


bash script? so it applies only for current session application? I run it with & parameter and then I close the ssh, will it work?
Top Expert 2005
the ulimit works for current process and all childs(but each process has it's own limit).
> I run it with & parameter
Yes. But of course the application has to be capable of running in background. Otherwise use nohup command in addition
nohup command parameters &

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts


yes, of course it continues to run in background, so no need for nohup?
Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.


Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.