WebSphere: java.net.SocketException: Muitos arquivos abertos

Uma aplicação em WebSphere ficou fora do ar. Verificando os Logs do FFDC (First Failure Data Capture), encontrei esta Exception:

------Start of DE processing------ = [15/09/10 15:20:08:591 BRT] , key = java.net.SocketException com.ibm.ws.http.HttpTransport.run 153
Exception = java.net.SocketException
Source = com.ibm.ws.http.HttpTransport.run
probeid = 153
Stack Dump = java.net.SocketException: Muitos arquivos abertos
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:457)
at java.net.ServerSocket.implAccept(ServerSocket.java:473)
at com.ibm.jsse2.hc.accept(hc.java:72)
at com.ibm.ws.http.HttpTransport.run(HttpTransport.java:456)
at java.lang.Thread.run(Thread.java:810)

Dump of callerThis =
null

Exception = java.net.SocketException
Source = com.ibm.ws.http.HttpTransport.run
probeid = 153
Dump of callerThis =
null

Pesquisei sobre outras ocorrências do erro no diretório de Logs do FFDC, que indicava erros de Socket, provavelmente provenientes do erro acima.

[wasusr@MeuServidor ffdc]$ grep "Muitos arquivos abertos" MinhaAplicação_*
MinhaApp_00000080_10.09.15_15.17.22_0.txt:Stack Dump = java.lang.Exception: java.net.SocketException: Muitos arquivos abertos
MinhaApp_00000080_10.09.15_15.17.22_0.txt:Caused by: java.net.SocketException: Muitos arquivos abertos
MinhaApp_00000080_10.09.15_15.17.22_1.txt: faultString: WSWS3713E: A conex?o com o host remoto paystudioservices.fnis.com.br falhou. O seguinte erro foi recebido: java.net.SocketException: Muitos arquivos abertos
MinhaApp_00000080_10.09.15_15.17.22_1.txt:WSWS3713E: A conex?o com o host remoto paystudioservices.fnis.com.br falhou. O seguinte erro foi recebido: java.net.SocketException: Muitos arquivos abertos
MinhaApp_00000080_10.09.15_15.17.22_2.txt: faultString: WSWS3713E: A conex?o com o host remoto paystudioservices.fnis.com.br falhou. O seguinte erro foi recebido: java.net.SocketException: Muitos arquivos abertos
MinhaApp_00000080_10.09.15_15.17.22_2.txt:WSWS3713E: A conex?o com o host remoto paystudioservices.fnis.com.br falhou. O seguinte erro foi recebido: java.net.SocketException: Muitos arquivos abertos
MinhaApp_0000008a_10.09.15_13.35.43_0.txt:Stack Dump = javax.servlet.ServletException: /cbssconfig/deploy/VisaVale.ear/VisaVale.war/inst/images/titCentralAtendimento.gif (Muitos arquivos abertos)
MinhaApp_00000092_10.09.15_14.14.33_0.txt:Stack Dump = java.lang.Exception: java.net.SocketException: Muitos arquivos abertos
MinhaApp_00000092_10.09.15_14.14.33_0.txt:Caused by: java.net.SocketException: Muitos arquivos abertos
MinhaApp_00000092_10.09.15_14.14.33_1.txt: faultString: WSWS3713E: A conex?o com o host remoto paystudioservices.fnis.com.br falhou. O seguinte erro foi recebido: java.net.SocketException: Muitos arquivos abertos
MinhaApp_00000092_10.09.15_14.14.33_1.txt:WSWS3713E: A conex?o com o host remoto paystudioservices.fnis.com.br falhou. O seguinte erro foi recebido: java.net.SocketException: Muitos arquivos abertos
MinhaApp_000000aa_10.09.15_15.20.08_0.txt:Stack Dump = java.net.SocketException: Muitos arquivos abertos
MinhaApp_00000607_10.09.15_14.15.10_0.txt:Stack Dump = java.net.SocketException: Muitos arquivos abertos
MinhaApp_00009aff_10.09.15_11.41.02_0.txt:Stack Dump = java.util.zip.ZipException: Muitos arquivos abertos /share_pat/libs/Web/commons-dbcp-1.2.1.jar

O motivo é que o limite de arquivos abertos permitidos pelo usuário do WebSphere estava em 1024. O recomendado pela documentação é 8096.

[wasusr@MeuServidor ffdc]$ ulimit -n
1024

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/tins_linuxsetup.html

Alteramos para 8096, mas alguns dias depois o mesmo problema ocorreu. Verifiquei que esta Aplicação permite Download e Upload de arquivos, e envio de emails. Alteramos então para 65536.
Este limite deve ser configurado no arquivo /etc/security/limits.conf e no .bash_profile do usuário owner do WebSphere, e a aplicação deve ser reiniciada.

[wasusr@MeuServidor ffdc]$ cat /opt/IBM/WAS/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

ulimit -n 65536

[wasusr@MeuServidor ffdc]$

[solvo@MeuServidor MinhaApp]$ cat /etc/security/limits.conf | grep wasusr
wasusr               soft    nofile  8192
wasusr               hard    nofile  65536
[wasusr@MeuServidor ffdc]$

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.