Tomcat 6、Java 6(openjdk)、centos 6.2で動作する新しいTomcatアプリケーションサーバーがあります。サーバは、centos 6.2ホスト上でqemu-kvmの下で動作する仮想マシンです。ホストとゲストの両方が64ビットです。オラクルシンJDBC接続がアクティブでない状態で「接続リセット」を受け取る
接続が開かれた場合(接続プールから)、接続が使用されていない約4時間、「長い計算」が発生します。最後に、「コミット」が発行され、サーバは、具体的には、「接続リセット」例外を与える:サーバーは、実際の物理ホストである以外
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:185)
at oracle.net.ns.Packet.receive(Packet.java:282)
at oracle.net.ns.DataPacket.receive(DataPacket.java:103)
at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:230)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:175)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:100)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:85)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:122)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:78)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1179)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1155)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:279)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C7Ocommoncall.doOCOMMIT(T4C7Ocommoncall.java:75)
at oracle.jdbc.driver.T4CConnection.doCommit(T4CConnection.java:558)
データベース・サーバーとクライアントは、同じサブネット上にあります、明らかに、app-serverは、同じサブネット上の物理マシン内で実行されているゲストです。
ホストは「ブリッジ」ネットワークを使用しました。
これはソフトウェアの問題ではなく、Linux OSの設定(iptables?)の問題ですが、実際はわかりません。
私はこの問題が間接的にiptables設定をフラッシュしてリロードする "system-config-firewall-tui"を実行することによって起こったと考えています。これにより、いくつかの既存の接続が切断されます。 – dmansfield