sql >> データベース >  >> RDS >> Oracle

java.sql.SQLException:I / Oエラー:Linuxサーバーで接続がリセットされました

    オラクルフォーラムからの回答、こちら

    java.security.SecureRandom sunが提供する標準APIです。このクラスが提供するさまざまなメソッドの中でvoid nextBytes(byte[])

    このメソッドは、ランダムバイトを生成するために使用されます。 Oracle 11g JDBCドライバーは、このAPIを使用して、ログイン中にランダムな数値を生成します。 Linuxを使用しているユーザーは、SQLException("Io exception: Connection reset")に遭遇しています。 。

    問題は2つあります:

    1. SecureRandom.nextBytes(byte[])の場合、JVMは/ tmp(または-Djava.io.tmpdirによって設定された代替tmpディレクトリ)内のすべてのファイルを一覧表示しようとします。 が呼び出されます。ファイルの数が多い場合、メソッドの応答に時間がかかるため、サーバーがタイムアウトします

    2. メソッドvoid nextBytes(byte[]) Linuxおよびランダム番号生成ハードウェアがない一部のマシンで/dev/ randomを使用すると、ログインプロセス全体が停止する程度まで操作が遅くなります。最終的に、ユーザーはSQLException( "Io例外:接続リセット")

      に遭遇します。

    基盤となるOSが障害のあるハードウェアで実行されているLinuxである場合、11gにアップグレードするユーザーはこの問題に遭遇する可能性があります。

    この原因はまだ正確には特定されていません。ハードウェアに問題があるか、何らかの理由でソフトウェアがdev/randomから読み取れないという事実のいずれかである可能性があります。

    解決策 この設定をjvmに追加しているようです

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


    1. MariaDBでのADDDATE()のしくみ

    2. MySQL-行から列へ

    3. 書き込み可能なパーティションへの変更が予期せず失敗する可能性があります

    4. PL/pgSQL関数から不明な列を持つ動的テーブルを返します