sql >> Database >  >> RDS >> Oracle

java.sql.SQLException:I/O-fout:verbinding opnieuw instellen in linux-server

Antwoord overgenomen van het orakelforum, hier :

java.security.SecureRandom is een standaard API geleverd door sun. Van de verschillende methoden die door deze klasse worden aangeboden, is void nextBytes(byte[]) .

Deze methode wordt gebruikt voor het genereren van willekeurige bytes. Oracle 11g JDBC-stuurprogramma's gebruiken deze API om tijdens het inloggen een willekeurig getal te genereren. Gebruikers die Linux gebruiken, hebben last gehad van SQLException("Io exception: Connection reset") .

Het probleem is tweeledig:

  1. De JVM probeert alle bestanden in de /tmp (of alternatieve tmp-map ingesteld door -Djava.io.tmpdir) weer te geven wanneerSecureRandom.nextBytes(byte[]) wordt ingeroepen. Als het aantal bestanden groot is, duurt het lang voordat de methode reageert, waardoor de server een time-out krijgt

  2. De methode void nextBytes(byte[]) gebruikt /dev/random op Linux en op sommige machines die de hardware voor het genereren van willekeurige getallen missen, vertraagt ​​de bewerking in die mate dat het hele inlogproces tot stilstand komt. Uiteindelijk komt de gebruiker SQLException tegen ("Io exception:Connection reset")

Gebruikers die upgraden naar 11g kunnen dit probleem tegenkomen als het onderliggende besturingssysteem Linux is dat op defecte hardware draait.

De oorzaak hiervan is nog niet precies vastgesteld. Het kan een hardwareprobleem zijn of het feit dat de software om de een of andere reden niet kan lezen van dev/random

een oplossing lijkt deze instelling toe te voegen aan de jvm

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


  1. Prestaties van MariaDB Java Connector-stuurprogramma

  2. Compressie inschakelen op een bestaande tabel in SQL Server (T-SQL)

  3. Eenvoudige PHP SQL-aanmeldingsproblemen oplossen

  4. Een nieuwe waarde toevoegen aan een bestaand ENUM-type