[pgsql-jp: 41037] Re: トランザクション中のネットワーク切断

Hiroki Kataoka kataoka @ interwiz.jp
2012年 1月 27日 (金) 21:54:01 JST


片岡です。

コネクション断は、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 メーリングリストの案内