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

Kei SUGIMOTO kei.wings @ gmail.com
2010年 9月 28日 (火) 12:10:23 JST


SRA OSS 高塚様
皆様

ご返信ありがとうございました。
2.2.3で改善されているようですね。バージョンアップ検討させていただきます。

以下引き続き質問です。

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

PostgreSQL側で片側がstatement_timeoutによって接続断となった場合、
kind mismatchとなることは認識しておりました。
「プロセスが無くなる⇒障害検知⇒切り離す」という仕様と考えておりましたが
これも改善されたのですね。

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

上記記載内容から、PostgreSQLでstatement_timeoutを実装していなくても、
もしWEBアプリなどから発行されたリクエストによるプロセスが残ってしまっても
pgpool側でSQLをキャンセルして、プロセスを解放してくれるということでしょうか?

以上です。

2010年9月22日15:50 TAKATSUKA Haruka <harukat @ sraoss.co.jp>:
> 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 メーリングリストの案内