1

Commons DBCP と接続プールの両方に Apache BasicDataSource を使用しています。

org.apache.commons.dbcp.BasicDataSource

そしてSpringを通してそれを管理します:

org.springframework.jdbc.datasource.DataSourceTransactionManager

この組み合わせを Teradata JDBC ドライバーと使用しているときに、データベースがダウンしたり、ネットワークの不具合が発生したりした場合に、次のエラーが表示されます。

08S01 804 : I/O エラー、ソケットが閉じられました。パケットストリーム書き込みエラー

これは状況を正しく反映していますが、問題は再接続にあります。エラーが物理的に解決されるか、DB が復旧し、プログラムがクエリを実行しようとすると、20 分、数時間、またはまったく変化しない一定期間、同じエラーが発生します。JVM を再起動するか、ホスト名の代わりに IP アドレスを使用するなどの接続文字列を変更すると、問題は解決します。

これを修正できる DataSource または Spring Transaction Manager の設定はありますか? それともTCP / IP設定ですか?

4

2 に答える 2

1

Windows と Linux の両方でこのエラーが表示されますか? Linux でのみ表示される場合は、Teradata JDBC ガイドを確認することをお勧めします。ログオン時に、Linux バージョンの JVM では遅いアルゴリズムを使用します。サービス コマンドの先頭に次の行を追加して、改善されるかどうかを確認してください。

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

注: これは、Teradata JDBC Driver ユーザー ガイドのトラブルシューティングの部分から抜粋したものです。

于 2010-09-15T19:19:30.377 に答える
1

Apache DBCP の設定を調べます。

http://commons.apache.org/dbcp/configuration.html

SELECT 1効率的な検証クエリにすることができます。返却時のテストを設定する必要があります。

また、何が起こっているのかを確認できるように、放棄された接続を削除してログに記録するようお願いします。

于 2010-09-01T09:44:19.173 に答える