[pgsql-jp: 41045] Re: トランザクション中のネットワーク切断
MauMau
maumau307 @ gmail.com
2012年 1月 30日 (月) 20:58:32 JST
水口さん
MauMauです。
検証結果の早々の共有、ありがとうございます。
TCP/IPのキープアライブ設定が期待どおりに機能したということで、まずはよかったですね。
以上です。
----- Original Message -----
From: "水口(ヴァンガードネットワークス)" <mizuguchi @ vanguard.ne.jp>
To: "'PostgreSQL Japanese Mailing List'" <pgsql-jp @ ml.postgresql.jp>
Sent: Monday, January 30, 2012 3:11 PM
Subject: [pgsql-jp: 41044] Re:トランザクション中のネットワーク切断
> 水口です。
>
> 遅くなって申し訳ありません。
> みなさん、返信ありがとうございます。
> いろいろ検証した結果です。
>
> 検証1.バジョン8.3ではPostgresql.confの下記設定項目はWINDOWSではサポートさ
>
> れていないようです。
> tcp_keepalives_idle
> tcp_keepalives_interval
> tcp_keepalives_count
>
> 一応試してみましたが、ログにnot supportが出力され
> そのままで試してみてもトランザクションは解放されませんでした。
>
> ちなみにバージョン9.1で試した所
> tcp_keepalives_idle、tcp_keepalives_interval この2つは利用でき、目的通り
>
> 解放されました。
>
>
> 検証2.WINDOWSのレジストリを変更した所、トランザクションが解放されました。
>
> KeepAliveTime=3000ms
> KeepAliveInterval=1200ms
> レジストリの変更は他のソフトに影響が出そうで、あまり気のりはしないです
> が・・・
> (http://support.microsoft.com/kb/314053/ja)
>
> 検証3.途中で思いついたのですが
> select (current_timestamp - xact_start) as duration , * from
> pg_stat_activity
> を実行すると実施中のトランザクションがどのくらい実施中かわかるので、規定
>
> 時間以上たっだ
> プロセスをチェックし、プログラム上から「Pg_Ctl kill TERM procid」コマン
>
> ドを投げて殺すという方法でも
> トランザクションは解放されました。
> ただこの方法が王道?なのかわかりませんが。
>
> 「結論」
> 8.3シリーズならレジストリ操作で対応
> (http://support.microsoft.com/kb/314053/ja)
> KeepAliveTime
> KeepAliveInterval
> TcpMaxDataRetransmissions
>
> 9.1シリーズならpostgresql.confで対応
> tcp_keepalives_idle
> tcp_keepalives_interval
>
pgsql-jp メーリングリストの案内