O Centos rodando o Apache Tomcat continua recebendo “java.net.SocketException: muitos arquivos abertos”

1

Estamos executando o Apache Tomcat 7.0.41 no CentOS 6 com a versão java "1.7.0_21". Nós estávamos recebendo muitos erros de arquivos abertos, então eu fiz algumas pesquisas. O consenso foi que era para com o número de arquivos abertos. Então fiz o seguinte:

  • Aumento de arquivos max em /etc/security/limits.conf

    soft     nofile         100000
    hard     nofile         100000
    
  • Reiniciou o servidor

  • Verifiquei que os limites eram válidos para o usuário que estava executando o processo

    [app_admin@xxx ~]$ ulimit -Hn
    100000
    [app_admin@xxx ~]$ ulimit -Sn
    100000
    
  • Arquivos abertos monitorados no servidor usando o comando lsof

O que eu observei foi quando o total de arquivos abertos chegou a cerca de 13000 e o tomcat teve cerca de 4500 arquivos abertos, o erro reapareceu.

Estou confuso. Eu pensei que teria resolvido o problema, mas claramente eu não entendo completamente a causa raiz e também como definir o parâmetro corretamente.

Para (talvez) ajudar eu não modifiquei o arquivo server.xml para o Tomcat (embora eu esteja tentado). Não quero começar a mexer com isso e piorar as coisas.

Estou mais do que feliz em compartilhar mais informações se alguém puder me dar algumas dicas sobre onde começar a procurar.

    
por Gerard Moroney 29.05.2014 / 08:31

1 resposta

2

Eu tive um problema semelhante com o Tomcat 6 e o Java 6, mas meu /etc/security/limits.conf se parece com

tomcat           soft    nproc   2047
tomcat           hard    nproc   16384
tomcat           soft    nofile  1024
tomcat           hard    nofile  65536

Em que tomcat é o serviço do usuário tomcat executado como.

    
por 29.05.2014 / 11:40