[pgpool-general-jp: 1262] Re: pgpoolから発行されるSQLの挙動について

Tatsuo Ishii ishii @ sraoss.co.jp
2014年 1月 31日 (金) 18:44:49 JST


石井です。

ソースコードを調べた結果、結論としては「無害」です。

この現象が発生する条件ですは、

1) 拡張問い合わせモード(-M extendedあり)

2) 同じセッションの中で、pgpool-IIが内部で発行するクエリがマスタに送ら
   れ、ユーザクエリは負荷分散によってマスタ以外に送られた

のANDです。PostgreSQLは、pg_stat_activityで表示されるクエリがidleになる
条件として、クライアント(この場合はpgool-II)から"sync"というメッセージ
が送られてくることなのです。ところが、syncを送ってしまうと、PostgreSQL
が勝手に無名ポータル(executorのハンドルのようなもの)を削除してしまい、
ユーザクエリが無名ポータルで実行中の場合に、後続のクエリが実行できなく
なってしまいます(しょうがないのでpgpool-IIは、syncの代わりに"flush"とい
うメッセージを送るようにしています)。

# PostgreSQLが、コマンドが正常終了したら、ステータスをactiveからidleに
# してくれれば良いのですが...

PostgreSQLの処理が現状のままである限り、今のところpgpool-II側では回避方
法がないため、無視していただくようにお願いします。

更にご興味のある方は、src/backend/postmaster/postmaster.c、
src/backend/tcop/postgres.cの3915行あたり(行数は現時点のmaster branch)
をご覧ください。
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp

> 石井様
> 
> お世話になります、貞永です。
> 
> -M extendedなし場合は発生しません。
> pg_stat_activityではstateがidleになっています。
> 実際に負荷がけした時のログを添付します。
> 
> よろしくお願いします。
> 
> 
> 
> 2014年1月29日 17:57 Tatsuo Ishii <ishii @ sraoss.co.jp>:
> 
>> 石井です。
>>
>> この現象は、-M extended なしでも発生しますか?
>> --
>> Tatsuo Ishii
>> SRA OSS, Inc. Japan
>> English: http://www.sraoss.co.jp/index_en.php
>> Japanese: http://www.sraoss.co.jp
>>
>> > お世話になります、貞永です。
>> >
>> > 昨年末から問い合わせさせていただているpgpoolから発行される
>> > SELECT count(*) FROM pg_catalog.pg_class AS c WHERE c.oid =
>> > pgpool_regclass('ユーザーテーブル') AND c.relpersistence = 'u'
>> > についてですが、いろいろ検証している中で気になる挙動が有りましたので、ご報告させていただきます。
>> >
>> > 構成は、
>> > pgpool-ii:: 3.3.1、マスタースレーブモード、ロードバランスモード、コネクションプールモードを使用
>> > PostgreSQL:9.3.0、ストリーミングレプリケーションでマスタ1台、スレーブ1台
>> > それぞれ別サーバーで、OSはCentOS6.4(64bit)
>> >
>> > pgbenchを使った負荷がけ(-S、-M extended)を行って確認しました。
>> >
>> > DB1号機(マスター)側で負荷がけ中のpg_stat_activityを見ると
>> > SELECT count(*) FROM pg_catalog.pg_class AS c WHERE c.oid =
>> > pgpool_regclass('pgbench_accounts') AND c.relpersistence = 'u'
>> > がずーっとactiveのままで残っていました。
>> > pgbenchが終了すると上記にSQLもきれいに消えています。
>> >
>> > psqlで\dxでpgpool_regclassが入っていることも確認しています。
>> >
>> > また、1号機をマスターからスレーブに切替を行った場合でも、スレーブの1号機にのみ同様の現象が発生します。
>> >
>> >
>> 以前、石井様からはこのSQLがアプリケーションのSQL発行前に実行され、それが終わらないとアプリのSQLが実行されないとおしえていただいたのですが、今回の現象において、これが起因してアプリケーションが遅くなっているようには見えませんでした。
>> > もともと、実際にシステム上に常に上記のSQLがLogTransactionとなってしまっているため、別途検証環境で検証を行い再現ができました。
>> > 参考までに、検証環境での負荷がけ時のログを添付します。
>> >
>> > この挙動は、実害がないよう見えていますが、不具合ではないでしょうか?
>> > もし不具合であれば解消の検討もしていただけるとありがたいです。
>> >
>> > 調査、確認の程よろしくお願いします。
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > --
>>
> 
> 
> 
> -- 
> ┌───────────────────────┐
>   株式会社アイティフォー
>     事業本部  技術企画部     貞永 佳市
>         Mail: ksadanaga @ itfor.co.jp
>         Tel: 03-5275-7903 (内線: 61466)
> └───────────────────────┘


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