2012-09-25 18 views
6

Comenzamos a tener este problema de "adaptador de red no podía establecer la conexión" en nuestro entorno de producción de vez en cuando, hice un montón de búsquedas en google y seguí algunas preguntas aquí, pero aún no obtuvo la solución.IOException: El adaptador de red no pudo establecer la conexión

Éstos son algunos información sobre nuestro medio ambiente:

  1. Estamos utilizando el RAC con 2 instancias de Oracle (versión 10.2.0.4).
  2. Tenemos varios servidores de aplicaciones (JBoss AS5) ejecutándose en la parte superior del RAC.
  3. La URL de conexión en oracle-ds.xml es "jdbc: oracle: thin: @ (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = db1_vip) (PORT = 1521)) (ADDRESS = (PROTOCOLO = TCP) (HOST = db2_vip) (PORT = 1521)) (LOAD_BALANCE = yes)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = G1db) (FAILOVER_MODE = (TYPE = SELECT) (MÉTODO = BÁSICO) (RETRIES = 120) (RETARDO = 5))))"
  4. Nos añadió db1_vip/db2_vip así la IP real del 2 instancias de Oracle a las/etc/hosts de ambos servidores de aplicación
  5. Hay ES servidor de seguridad entre las instancias de Oracle y servidores de aplicaciones , pero abrimos el puerto 1521 en ambas instancias Oracle.

Nos hemos quedado después de las pruebas para comprobar si hay algún problema en la red o Oracle TNS Listener:

  1. plazo ping desde servidores de aplicación a ambas instancias de Oracle, todo funciona bien sin ningún tipo de pérdida de paquetes.
  2. telnet el puerto 1521 desde los servidores de aplicaciones a ambas instancias de Oracle, nada de malo.
  3. tnsping también funciona bien.
  4. Verificamos el registro de escucha pero no encontramos nada valioso.

Lo más extraño es que este error ocurre alrededor de 10 veces por hora en un servidor de aplicaciones, pero solo ocurre 1 o 2 veces al día en otro servidor de aplicaciones.

¿Alguien puede arrojar algo de luz sobre este error?

Gracias

[EDIT4]: Hemos encontrado un problema de tiempo de espera cuando tnsping una instancia de Oracle, así que cambiamos la URL de JDBC para conectar sólo una instancia y encontramos el IOException nunca pasó de nuevo, por lo que pensamos que el problema está relacionado con la base de datos y el equipo de DBA continuará investigando esto.

[Edit3]: hemos siguientes intentos:

  1. desactivado el firewall entre los servidores de aplicaciones y servidores de bases de datos
  2. Uso IP en lugar del nombre de host
  3. uso Wireshark para comprobar si hay alguna TCP problema del paquete

ninguno de ellos tenga éxito, alguien por favor ayuda ~

[EDIT]: el seguimiento de la pila de error:

java.sql.SQLException: Io Exception: The Network Adapter could not establish the connection 
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) 
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) 
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255) 
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387) 
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414) 
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165) 
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35) 
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801) 
    at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:207) 
    ... 5 more 
+0

Está a sólo sugerencia: Tengo errores de red con java7 en x64. Si está usando java7 intente con la versión 6. – Mirko

+0

Estamos usando jdk5 en ambos servidores de aplicaciones. – asticx

+0

Intente utilizar la dirección IP del servidor db en lugar de su nombre de host; si esto funciona sin fallas, entonces puede reducir el problema a la resolución del nombre de host dns. – Zaki

Respuesta

6

El error

java.sql.SQLException: Io Excepción: el adaptador de red no pudo establecer la conexión

no tiene nada que ver con Java/JDBC. Este es el error que obtienes cuando hay algún problema con la configuración de tu red. Mi conjetura, problema de firewall. ¿Puedes desactivarlo y ver si el error sigue ahí?

+1

Podemos hacerlo, pero realmente dudo que sea la causa real, porque este error ocurre de forma intermitente, tanto el trabajo de ping y telnet y otro servidor de aplicaciones funciona la mayoría del tiempo . – asticx

+0

Veo, no puede desactivarlo por más tiempo. Pensaba que, dado que está ocurriendo de vez en cuando, el cortafuegos podría dejar caer algunos paquetes TCP/IP, y la pila tcp de la máquina cliente lo interpreta como imposible de conectar. Pero es solo una hipótesis. –

+0

Usamos el ping entre servidores de aplicaciones y servidores de bases de datos y no encontramos ninguna pérdida de paquetes, no estoy seguro si esta es la mejor manera. – asticx

-1

editar la conexión y probarla aunque su tnsping encontró !, si el uso VirtualBox (en el permiso de verificación adaptador de todos), en mi caso, el error fue cuando se utiliza el IP, en lugar de utilizar localhost

Cuestiones relacionadas