2 時間以上かかる postgres クエリを実行しています。このクエリは、Java プログラムで hibernate を使用して実行されます。約 1.5 時間後、クエリは pg_admin のサーバー ステータスに表示されなくなります。
データベース上のアクティブなクエリのリストからクエリが消えたため、成功またはタイムアウト例外が発生することを期待しています。しかし、私は何も取得しません。(例外はありません)、スレッドは待機状態でスタックします。テーブルにいくつかの挿入を行うはずだったので、クエリが終了していないことはわかっていますが、テーブルに期待される行が見つかりません。
接続プールに pgbouncer を使用しており、query_timeout が無効になっています。休止状態のタイムアウトだった場合、例外が発生するはずでした。DB マシンとクライアント マシン (Java プログラムを実行しているマシン) の OS パラメータ
- tcp_keepalive_time は 7200 (秒)
- tcp_keepalive_intvl = 75
- tcp_keepalive_probes = 9 (プローブの数) 両方のマシンで RHEL オペレーティング システムを実行します。私はその問題に指を置くことができません。