We are having a "too many open files" problem in production, which might be caused by too many threads opened from tomcat. One of the deployed apps is a middleware which is a proxy for handling a large number of requests (each
servlet request makes couple of network calls). During large loads this is throwing a "java.net.socket" exception and the application stops working after that. I checked for open files with "lsof" and sometimes the number reaches "1900" and stays there even after the requests have stopped.
So I am assuming bringing down the open connections should help solve this problem.
However, there might be leaks somewhere else in the application i.e., unclosed network connections etc., but so far I haven't been able to find any. I am printing debug statements and making sure all network calls are closed after completion.