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