Eu tenho tido um problema com o tomcat, onde continuo recebendo "Muitos arquivos abertos"
25-Jul-2018 08:17:49.504 SEVERE [http-nio-443-exec-31] . /u01/app/ords/ords.18.1.1.95.1251/db_conf/m/url-mapping.xml: Too many open files
java.nio.file.FileSystemException: /u01/app/ords/ords.18.1.1.95.1251/db_conf/m/url-mapping.xml: Too many open files
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:91)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
at java.nio.file.Files.newByteChannel(Files.java:361)
Eu tentei aumentar o ulimit para arquivos abertos para 65536, mas tudo isso aumenta o erro.
tomcat@tomcatserver():/home/tomcat> ulimit -a | grep open
open files (-n) 65536
Descobri que o erro está vindo de um aplicativo apex que pesquisa o banco de dados em busca de alterações. O aplicativo pesquisa a cada 3 segundos. se eu assistir a contagem de arquivos lsof | grep tomcat | wc-l
, posso ver o número aumentando enquanto o aplicativo está aberto e depois fica estável quando fechado. e quando há várias sessões abertas, esse número pode crescer rapidamente.
Existe algum valor de configuração que eu possa definir no server.xml ou algo no lado do apex que limitará o número de arquivos que ele mantém aberto? Qualquer ajuda será muito apreciada.
NOTA.
As conexões do aplicativo estão sendo fechadas. Eu posso ver isso fazendo netstat -a | grep client_hostname
. Eu posso ver uma conexão exta chegando a cada 3 segundos e depois desaparecendo.
Tags tomcat