I have noticed with lsof that every time a CGI script is executed within Tomcat, the number of file descriptors used by Tomcat increases by 1. Once in a while, the number of file descriptors drops to its initial level. However, I am seeing many instances where the number of file descriptors increases steadily until it reaches a large number (around 1000 files). At that point, when the script executes, the web server generates an HTTP status 500 error page. If I execute the script after the Web server has done some maintenance work and the number of file descriptors is back to an acceptable level, then, the CGI script executes without any issues.
I have done some experiments by running some java code as part of an application that runs on the Web server. If I run a system call (unsing Runtime.getRuntime().exec) and grab the input/output/error streams, but do not explicitly close them, the number of file descriptor in use increases and stays to this level for some time. Eventually, it comes back to the original number. I have the impression that there is a link between garbage collection and the recylcing of file descriptors.
Anybody has experienced something similar? Is this an issue that should be solved in Tomcat. Are there workarounds?
Got holiday prints? See all the ways to get quality prints in your hands ASAP.