[pgpool-general-jp: 804] Re: pgpoolのタイムアウト

TAKATSUKA Haruka harukat @ sraoss.co.jp
2010年 9月 22日 (水) 15:50:00 JST


SRA OSS 高塚と申します。

pgpool-II 2.2.2 → 2.2.3 の修正で以下のような件がありまして、
本件はバージョンアップで解決できそうに見えます。

http://pgpool.projects.postgresql.org/pgpool-II/doc/pgpool-ja.html

リリースノート:

・statement_timeoutのタイムアウトによるエラー処理を改良しました。実際には
  タイムアウトまでにstatement_timeoutで設定した時間の倍かかっていたのを
  直しました。また、masterだけがstatement_timeoutを返した場合にも対応
  できるようにしました。以前はkind mismatchエラーになっていました(Tatsuo)。
   (master以外がstatement_timeoutを返さないケースではkind mismatchエラー
   になります)。 

・バックエンドにSQLを投げ、その応答を待っている間にクライアントがpgpoolに
 対するコネクションを切断したことが検出できるようになりました。たとえば、
 WebアプリケーションではDBに対してリクエストを投げて、応答がないとキャンセル
 するようなことが頻繁に起ります。この場合、今まではpgpoolやPostgreSQLのプロ
 セスが残ってしまい、同時接続数が枯渇したり、ロックを取ったままのトランザク
 ションが残るなどしてシステム全体に影響を与えることがありました。今回の修正
 により、こうした状況が検出できるようになっただけでなく、SQLの応答待ちの間
 にクライアントがコネクションを切断した際には、SQLコマンドのキャンセルを
 pgpoolが行なって、ロック待ちなどのバックエンドプロセスが残るのを防ぐことが
 できるようになりました(Tatsuo)。


On Wed, 22 Sep 2010 14:39:07 +0900
Kei SUGIMOTO <kei.wings @ gmail.com> wrote:

> お世話になります。
> 
> 【環境】
> pgpool-II-2.2.2
> PostgreSQL 8.1.11 (2ノード)
> を使用しております。
> pgpoolはりプリケーションモードです。
> 
> タイムアウト関連の設定は以下の通りです:
> child_life_time = 300
> connection_life_time = 600
> client_idle_limit = 0
> authentication_timeout = 60
> health_check_timeout = 20
> 
> 【状況】
> 現在、pgpool経由で特定のUPDATE文が終了しないという
> 状態が発生しております。本来はSQL文やアプリ側の設定や設計を
> 見なおすべきなのですが、暫定策を探しております。
> 
> 実はPostgreSQL側でstatement_timeoutの設定を施し、暫く運用していた
> ところ、該当のUPDATE文が終了しないという状態が再発し、statement_timeout
> で設定した時間の後、想定通りにUPDATE文が終了(おそらくrollback)したのですが
> 今度はpgpoolがsecondary nodeを切り離す縮退となってしまいました。
> 
> 【質問】
> PostgreSQLのstatement_timeoutと同じ動作をするpgpool設定はありませんでしょうか?
> 
> 些細なことでも結構です、何方か解決方法、何か気付かれたことなど
> ございましたら、ご返信をお願いします。

______________________________________________________________________
 高塚 遙  harukat @ sraoss.co.jp  SRA OSS, Inc  http://www.sraoss.co.jp



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