Link to home
Start Free TrialLog in
Avatar of Buffon
BuffonFlag for Israel

asked on

open file descriptors

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 :)
Avatar of slyong
slyong

Hi,

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
Avatar of Buffon

ASKER

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"?
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
Avatar of Buffon

ASKER

is it recommended to increase it? what is the impact on system?
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.
Avatar of Buffon

ASKER

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?
How the application is started?
Avatar of Buffon

ASKER

through ssh, as root, java Server......
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
Avatar of Buffon

ASKER

bash script? so it applies only for current session application? I run it with & parameter and then I close the ssh, will it work?
ASKER CERTIFIED SOLUTION
Avatar of ravenpl
ravenpl
Flag of Poland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Buffon

ASKER

yes, of course it continues to run in background, so no need for nohup?