Muitos arquivos abertos no soquete

Muitos arquivos abertos no soquete

Eu tenho um grande problema: o aplicativo de produção da minha empresa, que infelizmente não consigo desligar e reiniciar (não tenho certeza de como e não quero cometer nenhum erro), está gerando muitas exceções em muitos arquivos open ao tentar abrir um soquete para ler de um servidor FTP.

2013-01-02 16:19:03,222 ERROR [main] software.background.Program(Program.java:doExecute{225}) - Exception during ftp transfer
someclasses.ftp.FtpException: Could not create connection to xxxx
    at someclasses.communication.ftp.FtpImpl.connect(FtpImpl.java:114)
    at Program.doExecute(Program.java:176)
    at Program.main(Program.java:287)
Caused by: java.net.SocketException: Too many open files
    at java.net.Socket.createImpl(Socket.java:397)
    at java.net.Socket.<init>(Socket.java:371)
    at java.net.Socket.<init>(Socket.java:189)
    at someclasses.Ftp.connect(Ftp.java:386)

Entendo que o limite de arquivos/soquetes abertos por aplicativo e assim por diante foi atingido. Existe alguma forma de aumentar esse máximo por enquanto sem fechar o aplicativo? Eu executei o comando ulimite ele afirma unlimited. Tentei verificar quantas conexões ele abriu com o lsof -p PIDcomando, mas aparece "comando não encontrado".

Ficaria muito feliz se alguém pudesse me ajudar a encontrar outro efeito semelhante ao lsof (acho que é uma máquina de chapéu vermelho) e conselhos sobre como consertar isso temporariamente? A solução mais agradável para isso seria aumentar o número de arquivos/soquetes que o aplicativo poderia abrir. Este é apenas um aplicativo Java simples.

Desde já, obrigado!

EDITAR outra solução seria se houvesse algum comando onde eu pudesse ver como esse programa foi executado desde o início com todos os eventuais flags. Então talvez eu pudesse reiniciá-lo com sucesso. Este é um aplicativo legado.

Responder1

Tudo terminou com a reinicialização do aplicativo. Alterei ulimit -n para 2048 e recarreguei a configuração. Porém, todos os processos herdaram a configuração antiga e o aplicativo teve que ser reiniciado.

informação relacionada