Oracle
 sql >> Base de données >  >> RDS >> Oracle

java.sql.SQLException :erreur d'E/S :réinitialisation de la connexion dans le serveur Linux

Réponse tirée du forum oracle, ici :

java.security.SecureRandom est une API standard fournie par sun. Parmi les différentes méthodes proposées par cette classe void nextBytes(byte[]) .

Cette méthode est utilisée pour générer des octets aléatoires. Les pilotes Oracle 11g JDBC utilisent cette API pour générer un nombre aléatoire lors de la connexion. Les utilisateurs utilisant Linux ont rencontré SQLException("Io exception: Connection reset") .

Le problème est double :

  1. La JVM essaie de répertorier tous les fichiers dans le /tmp (ou un autre répertoire tmp défini par -Djava.io.tmpdir) lorsque SecureRandom.nextBytes(byte[]) est invoqué. Si le nombre de fichiers est important, la méthode met beaucoup de temps à répondre et provoque donc l'expiration du serveur

  2. La méthode void nextBytes(byte[]) utilise /dev/random sous Linux et sur certaines machines dépourvues du matériel générateur de nombres aléatoires, l'opération ralentit au point d'arrêter tout le processus de connexion. En fin de compte, l'utilisateur rencontre SQLException("Io exception:Connection reset")

Les utilisateurs effectuant une mise à niveau vers 11g peuvent rencontrer ce problème si le système d'exploitation sous-jacent est Linux qui s'exécute sur un matériel défectueux.

La cause de cela n'a pas encore été déterminée avec précision. Il peut s'agir d'un problème matériel ou du fait que, pour une raison quelconque, le logiciel ne peut pas lire à partir de dev/random

une solution semble ajouter ce paramètre à la jvm

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