[pgpool-general-jp: 616] Re: オンラインリカバリ時のBackendErrorについて

Ryoichi TANABE r-tanabe @ nsat.co.jp
2009年 9月 2日 (水) 18:18:08 JST


お世話になっております。田辺です。
先日のメールについて補足させてください。

child.c:Req_info->conn_counterに注目し、child.c:connection_count_down()
の直後にReq_info->conn_counterの値をpool_log()を使ってログ出力させたとこ
ろ、値がマイナス(-1)になっていました。

ここから推測すると、このために、オンラインリカバリ時に
recovery.c:wait_connection_closed()内
                if (Req_info->conn_counter == 0)
が満たされず、クライアントのクローズ待ちがタイムアウトしているように見え
ます。

レプリケーションしているPostgreDBの停止には、

 (a) pg_ctl stop -D /usr/local/pgsql/data
 (b) pg_ctl stop -D /usr/local/pgsql/data -s -m fast

を使いました。本事象は、両方で発生するのですが、(b)の方がより発生しやす
いです。

そこで質問なのですが、
 (1) カウンタがマイナス値になることは想定通りの動作でしょうか?

 (2) 上記(1)の回答で”想定通りでない”場合、回避方法はありますでしょう
か?

 (3) Postgresの停止として、-m fastの利用は許されていないのでしょうか?

 (4) カウンタがマイナス値になった場合の検出方法やリセット方法はあります
でしょうか?

 質問を書き連ねて申し訳ありませんが、ご教授いただけないでしょうか。

 以上、よろしくお願いします。




Date:Fri, 21 Aug 2009 15:08:34 +0900
From:Ryoichi TANABE <r-tanabe @ nsat.co.jp>様
To:pgpool-general-jp @ sraoss.jp
Cc:--
> 初めまして。田辺と申します。
> 掲題の件に関し質問させていただきたくメールしました。
> 
> オンラインリカバリの 2ndステージに入ったところで、クライアントプログラ
ム
> が、DB接続完了待ちになり、リカバリタイムアウト(recovery_timeout)まで処
理
> が戻りません。オンラインリカバリは、タイムアウトしたところで
BackendError
> エラーで失敗します。
> 
> PGPool側での2nd ステージ開始時のクライアント接続の終了待ち と
> クライアントプログラムでのDB接続完了待ち とが
> 互いに待ち続けているように見えています。
> 
> v2.2.2ではこのように互いに待ち続けているようなことはありませんでした。
> 
> 対処法などございましたらご回答の程よろしくお願いします。
> 
> 
> 
> 
> ※PGPoolのログより抜粋
> 2009-08-20 14:08:22 LOG:   pid 27568: starting 2nd stage
> 2009-08-20 14:14:25 ERROR: pid 27568: wait_connection_closed: existing 
> connections did not close in 360 sec.
> 2009-08-20 14:14:25 ERROR: pid 27568: start_recovery: timeover for 
> waiting connection closed
> 
> ※pgpool.confより抜粋
> recovery_timeout = 360
> client_idle_limit_in_recovery = 240
> 
> ※クライアントプログラムはPythonで作成しいます
> ※クライアントプログラムは、常駐プロセスで、
>   pgdb.connect() -> cursor.executemany() -> db.commit() -> db.close()
>  を繰り返しています。pgdb.connect()で処理が止まっている状態になります
> ※システム構成情報
>  PGPool-II  : v2.2.3
>  PostgreSQLl: 8.3.7
>  OS         : CentOS5
>  Python     : 2.5.1
>  DB-API     : PyGreSQL-4.0
>  2ノードのレプリケーションモード
> 
> 以上
> -----------
> 田辺亮一
> _______________________________________________
> pgpool-general-jp mailing list
> pgpool-general-jp @ sraoss.jp
> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp


-----------
田辺亮一


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