[pgsql-jp: 38597] Re: セッションを維持したままノードを落とした際の動作
Nobuaki Sukegawa
nsukegawa @ situs.co.jp
2007年 7月 23日 (月) 23:39:51 JST
助川です。
ご返信遅くなりましてすみません。
・TCPタイムアウトの設定
ご推察の通り、Linux(RHEL4.1)を使用しておりまして
tcp_keepalive_intvl, tcp_keepalive_probes では変化しませんでしたが
tcp_retries1, tcp_retries2 で調整できることが分かりました。
ありがとうございました。
・ヘルスチェックのタイムアウト
health_check_timeout を変更しても、ケーブルを抜いた際
connect_inet_domain_socket: connect() failed: No route to host
となるまでに(チェック開始から)かかる時間に反映されず、
OSの設定(tcp_syn_retries)に依存してしまいます。
この点は仕様と考えてよろしいでしょうか?
・ヘルスチェックなしでの断線
ヘルスチェックなしでこの検証を行った場合
なぜか断線していない側のノードをシャットダウンしてしまいます。
--経過
1. psql-pgpoolでセッション開始
2. ノードの片方が動作するマシンのケーブルを抜く
3. 1.のセッション上でクエリ
(TCPタイムアウト)
4. 縮退発生→断線していない方のノード シャットダウン
1.のセッションは
'The connection to the server was lost. Attempting reset: Failed.'
で終了
--
断線していない側はlocalhostで動作させていますが、
ログには以下のように出力されます。
--
2007-07-23 18:01:47 DEBUG: pid 6420: waiting for backend 0 completing the query
2007-07-23 18:01:47 DEBUG: pid 6420: waiting for backend 1 completing the query
2007-07-23 18:17:13 DEBUG: pid 6420: read_kind_from_backend: read kind from 0th backend E NUM_BACKENDS: 2
2007-07-23 18:17:13 ERROR: pid 6420: pool_read: read failed (No route to host)
2007-07-23 18:17:13 LOG: pid 6420: notice_backend_error: 0 fail over request from pid 6420
2007-07-23 18:17:13 DEBUG: pid 6388: failover_handler called
2007-07-23 18:17:13 LOG: pid 6388: starting degeneration. shutdown host localhost(5432)
2007-07-23 18:17:13 DEBUG: pid 6388: failover_handler: starting to select new master node
2007-07-23 18:17:13 LOG: pid 6388: failover_handler: set new master node: 1
--
この動作についても、仕様として考えられるかご教授頂けませんでしょうか。
よろしくお願いいたします。
pgsql-jp メーリングリストの案内