[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 メーリングリストの案内