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

MauMau maumau307 @ gmail.com
2012年 1月 28日 (土) 16:51:31 JST


MauMauです。

片岡さんの言われるように、8.3のマニュアルでは、
Windowsでtcp_keepalives_xxxが使える/使えないという記述がないのに対し、
9.1のマニュアルではWindowsについての記述があります。

ソースコードでも、9.1ではWindows用の専用コードの中で、
WSAIoctl()を使って、
tcp_keepalives_idleとtcp_keepalives_intervalの設定を適用しています。
tcp_keepalives_countの設定は有効にならないようです。
一方、8.3のソースコードでは、そのような処理がありません。
8.3ではtcp_keepalives_xxxの設定は有効にならないということでしょうか。

もしレジストリの値の変更によってPostgreSQL以外のプログラムに影響が及ぶのを心配するならば、
PostgreSQL 9.1を使うのがよいと思います。


以上です。

From: "Hiroki Kataoka" <kataoka @ interwiz.jp>
>>> コネクション断は、LinuxやWindowsのデフォルトでは2時間少々で検出されます。つまりその間はロックされっぱなしになる可能性があります。
>>>
>>> もっと早いタイミングで検出したいなら、通常はpostgresql.confで
>>> tcp_keepalives_idle
>>> tcp_keepalives_interval
>>> tcp_keepalives_count
>>> を設定すればOKですが、残念ながらWindowsではnot
>>> suppoertedで機能しません。Windowsで対策をするなら、レジストリを書き換えてOSのデフォルト設定(2時間)を変更するしかないと思います。



pgsql-jp メーリングリストの案内