sql >> Database teknologi >  >> RDS >> Oracle

java.sql.SQLEundtagelse:I/O-fejl:Forbindelsen blev nulstillet i linux-serveren

Svaret er taget fra oracle forum, her :

java.security.SecureRandom er en standard API leveret af sun. Blandt forskellige metoder, der tilbydes af denne klasse void nextBytes(byte[]) .

Denne metode bruges til at generere tilfældige bytes. Oracle 11g JDBC-drivere bruger denne API til at generere tilfældige tal under login. Brugere, der bruger Linux, har stødt på SQLException("Io exception: Connection reset") .

Problemet er todelt:

  1. JVM'en forsøger at liste alle filerne i /tmp (eller alternativ tmp-mappe indstillet af -Djava.io.tmpdir), nårSecureRandom.nextBytes(byte[]) er påberåbt. Hvis antallet af filer er stort, tager metoden lang tid at reagere og får serveren til at timeout

  2. Metoden void nextBytes(byte[]) bruger /dev/random på Linux og på nogle maskiner, som mangler hardware, der genererer tilfældigt antal, sænkes operationen i det omfang, at hele login-processen standses. I sidste ende støder brugeren på SQLException ("Io undtagelse:Forbindelsesnulstilling")

Brugere, der opgraderer til 11g, kan støde på dette problem, hvis det underliggende OS er Linux, som kører på en defekt hardware.

Årsagen til dette er endnu ikke fastlagt præcist. Det kan enten være et problem i hardwaren eller det faktum, at softwaren af ​​en eller anden grund ikke kan læse fra dev/random

en løsning synes at tilføje denne indstilling til jvm

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


  1. Advarsel:mysql_fetch_array():det angivne argument er ikke et gyldigt MySQL-resultat

  2. Tuples er ikke indsat sekventielt i databasetabellen?

  3. Hvornår kaldes SQLiteOpenHelper onCreate-metoden?

  4. Forstå Amazon Auroras Multi-AZ-implementering