sql >> Base de Datos >  >> RDS >> Oracle

java.sql.SQLException:error de E/S:restablecimiento de la conexión en el servidor Linux

La respuesta se tomó del foro de Oracle, aquí :

java.security.SecureRandom es una API estándar proporcionada por sun. Entre varios métodos ofrecidos por esta clase void nextBytes(byte[]) .

Este método se utiliza para generar bytes aleatorios. Los controladores Oracle 11g JDBC utilizan esta API para generar un número aleatorio durante el inicio de sesión. Los usuarios que usan Linux se han encontrado con SQLException("Io exception: Connection reset") .

El problema es doble:

  1. La JVM intenta enumerar todos los archivos en /tmp (o en el directorio tmp alternativo establecido por -Djava.io.tmpdir) cuando SecureRandom.nextBytes(byte[]) es invocado. Si la cantidad de archivos es grande, el método tarda mucho en responder y, por lo tanto, hace que el servidor se agote

  2. El método void nextBytes(byte[]) usa /dev/random en Linux y en algunas máquinas que carecen del hardware generador de números aleatorios, la operación se ralentiza hasta el punto de detener todo el proceso de inicio de sesión. En última instancia, el usuario encuentra SQLException ("Excepción de Io:restablecimiento de conexión")

Los usuarios que actualicen a 11g pueden encontrar este problema si el sistema operativo subyacente es Linux que se ejecuta en un hardware defectuoso.

La causa de esto aún no se ha determinado con exactitud. Podría ser un problema en el hardware o el hecho de que, por alguna razón, el software no puede leer desde dev/random

una solución parece agregar esta configuración al jvm

-Djava.security.egd=file:/dev/./urandom