Buffon
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 :)
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"?
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
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
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.
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.
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?
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
ulimit -n 10240
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
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
yes, of course it continues to run in background, so no need for nohup?
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