[RESOLVIDO] Too Many Open Files

Bom dia, galera!

Tenho um sistema que faz gravações de telefone de voz sobre IP, e a gravação dos áudios é gravada em disco, compactada.
De uns dias pra cá esse erro “Too Many Open Files” tem aparecido, e inclusive está parando o serviço em um dos clientes da empresa.
O sistema tem um módulo servidor, um cliente, e um WebService que serve, entre outras coisas, pra comunicar status do hardware de gravação (que é um equipamento separado).
Não posso, por questões de autonomia e tempo, alterar a arquitetura do negócio. EJB e tudo mais, tudo isso está completamente fora de cogitação.
E óbvio, o código não está lá uma maravilha.
Como eu cheguei na empresa há pouco tempo e conheço quase nada no sistema, varri o cara e os logs em busca de onde e quando há abertura de arquivos.
Situações em que eu abro arquivos no sistema:
- Conexões com o banco: Foi feita usando Singleton, e varri o sistema todo em busca de Conexões, ResultSets e Statements não fechados / liberados. Havia alguns, todos devidamente corrigidos;
- Runtime exec: Os streamings gerados pela abertura do processo, de entrada, saída, erro e tudo mais, não estavam sendo fechados; substituí pela implementação da Apache Commons IO, FileSystemUtils, e a destruição dos processos e fechamento dos streamings está sendo feito corretamente;
- Chamadas do WebService: As chamadas são feitas utilizando-se Axis2, RPCServiceClient, e o cleanup está sendo executado ao final de todas as chamadas (com o devido tratamento de exceção.
Claro, vocês não conhecem o sistema, então a pergunta é meio aleatória:
Num sistema Web que este é, que fora as gravações, é só um CRUD que usa alguma coisa de WebService, onde mais ele poderia estar abrindo arquivos? O erro persiste, e nada me vem à mente do que pode ser.
Alguma idéia?
Abraços e obrigado pela força =)
Léo

Está utilizando linux? Existe um parâmetro do sistema operacional que resolve

EDIT: Sim, estou usando Linux.
As alterações de parâmetro, ulimit e tudo mais, já haviam sido feitas antes; mas também não surtiram efeito.
No link que você me passou ele indica algo com relação ao classpath / manifest, vou dar uma olhada nisso. Como o erro só ocorre após algumas horas, não tenho como dizer imediatamente se deu certo, mas vou tentar e volto a postar.
Valeu, André!

OI,

Tenta rodar o código que o Brew postou, ele vai te mostrar os arquivos abertos

Funcionou para mim aqui (talvez ajude tb)

Abs

Opa, é mesmo!
Dá a lista todinha… já fica mais fácil de identificar quem é quem nessa bagaça.
Valeu de novo a força!

Pessoal, apenas informando que achei a solução pro problema. Para registro, segue a solução.
Toda a parte de WebService desse sistema foi feita utilizando Axis2; só que como esse é um sistema um pouco antigo, a versão que estava aqui era a 1.4.
Na realidade, as conexões feitas pelo RPCServiceClient ficavam com status CLOSE_WAIT eternamente, o que acabava gerando o erro mencionado.
Achei no Changelog uma correção pra esse bug na versão 1.5.1; atualizei logo pra 1.6 e voilà: resolvido.
Abraço e obrigado ajuda, André!