Olá galera.
Tenho uma aplicação em JSP e Servlet (MVC / Fachada / DAO / ConnectionFactory) na qual um processo tem retornado NoRouteToHostException:
Exception in thread "main" excecoes.DAOException: Não foi possível abrir a conexão: org.postgresql.util.PSQLException: A tentativa de conexão falhou.
(...)
Caused by: excecoes.DAOException: org.postgresql.util.PSQLException: A tentativa de conexão falhou.
(...)
Caused by: org.postgresql.util.PSQLException: A tentativa de conexão falhou.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:136)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:65)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:116)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
at org.postgresql.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:369)
at org.postgresql.Driver.connect(Driver.java:245)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
... 6 more
Caused by: java.net.NoRouteToHostException: Cannot assign requested address
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at org.postgresql.core.PGStream.<init>(PGStream.java:60)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:77)
... 14 more
Java Result: 1
Eu utilizando Ubuntu 12.04 x64 e pelo que li por aí há um limite de conexões por host. A constatação disso se deu utilizando os comandos:
[list]Antes do processo iniciar:[/list]
$ netstat -a | grep postgres > conexoes_postgres
$ wc -l conexoes_postgres
3 conexoes_postgres
[list]Um tempo depois do processo sendo executado:[/list]
$ netstat -a | grep postgres > conexoes_postgres_on
$ wc -l conexoes_postgres_on
24534 conexoes_postgres_on
Ou seja, há 24534 conexões no estado TIME_WAIT.
Alguém tem alguma ideia de como solucionar isto?
Att.