[pgsql-jp: 41038] Re: トランザクション中のネットワーク切断
Tatsuo Ishii
ishii @ sraoss.co.jp
2012年 1月 28日 (土) 02:12:23 JST
石井です。
tcp_keepalives_*を設定する方法は、当たり前ですが UNIX ドメインソケット
を使って接続している場合には効果がないというのが欠点だと思います。
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp
> 片岡です。
>
> コネクション断は、LinuxやWindowsのデフォルトでは2時間少々で検出されます。つまりその間はロックされっぱなしになる可能性があります。
>
> もっと早いタイミングで検出したいなら、通常はpostgresql.confで
> tcp_keepalives_idle
> tcp_keepalives_interval
> tcp_keepalives_count
> を設定すればOKですが、残念ながらWindowsではnot
> suppoertedで機能しません。Windowsで対策をするなら、レジストリを書き換えてOSのデフォルト設定(2時間)を変更するしかないと思います。
>
> Windows XPのドキュメントですが、 http://support.microsoft.com/kb/314053/ja で
> KeepAliveTime
> KeepAliveInterval
> TcpMaxDataRetransmissions
> このあたりをチェックしてみてください。
>
> 2012年1月27日19:26 水口(ヴァンガードネットワークス) <mizuguchi @ vanguard.ne.jp>:
>> SELECT FRO UPDATE後に障害でネットワークが切断されると
>> そのテーブルがロックしたままとなり
>> 他のクライアントの同じ処理でSELECT FOR UPDATE できなくなってしまいます
>> この様に浮いてしまったトランザクションは自動的に解放されないのでしょうか?
>
>> 環境
>> SERVER:WINDOWS7-32Bit postgresql8.3.12
>
> --
> Hiroki Kataoka
pgsql-jp メーリングリストの案内