[pgpool-general-jp: 1634] Re: pgpool-IIの処理性能について
Tatsuo Ishii
ishii @ sraoss.co.jp
2020年 9月 2日 (水) 10:37:06 JST
石井です。
Pgpool-II経由のときに、1 SQLあたり19ミリ秒余計にかかるのはちょっとオー
バヘッドが大きすぎるように思います。
手元の環境で(pgbench, Pgpool-II, PostgreSQL, すべて同じマシン上に環境
構築)pgbenchを使ってテストすると[1]、
Pgpool-II経由:latency average = 27.318 ms
PostgreSQL直接: latency average = 25.578 ms
その差は1.7ミリ秒ほどです(ただし、1 SQLあたりではなく、1トランザクショ
ンあたり。1 SQLあたりなら差はもっと小さいはず)。北村さんの環境でオーバ
ヘッドが大きい理由として考えられるのは、
1) Javaアプリ<-->Pgpool-II<-->PostgreSQLのどこかでネットワークが遅い
2) Pgpool-IIが走っているマシンのCPUリソース and/or メモリが足りない
3) テストに使用したINSERT文やUPDATE文が長大で、Pgpool-IIがパースするの
に時間がかかっている(これは4.1で改善されています)
4) 一部の問い合わせが遠隔地のスタンバイにも送られていてその応答待ちで
時間がかかっている(お伺いした設定ではその可能性はないはずですが、一応。)
などです。まずは問題の切り分けを行ってみてはいかがでしょう?
あと、4.0.2は2年前にリリースされただいぶ古いバージョンで、その後性能改
善も行われているので、同じ4.0系の最新版を試してみるのも良いと思います。
[1]実際に使ったコマンドは、
pgbench -M extended -n -p 11000 -T 10 -c 10 test
> はじめまして、お世話になります。
> 北村と申します。
>
> 現在Pgpool-IIの検証を行っているのですが、アプリケーションを
> postgreSQLに直接接続した場合とPgpool-IIに接続した場合で
> 性能差が出ており、Pgpool-II経由の方が約6倍処理時間がかかっています。
>
> この差が妥当な値なのか、チューニングにより性能改善が見込める
> 可能性があるのか、ご教示いただきたくメールさせていただきました。
>
> 【検証環境】
> ○PostgreSQL 11
> - RHEL 7に構築
> - 2台構成で非同期ストリーミングレプリケーションを構築
> - スタンバイサーバは遠隔地に配置している
> ○Pgpool-II 4.0.2
> - RHEL 7に構築(DBサーバとは別サーバ)
> - コネクションプーリングは使用しない(connection_cache = off)
> (javaのコネクションプーリングを使用しているため)
> - DBプライマリにアクセスしたいため、
> 負荷分散は行わない(load_balance_mode = off)
>
> 【検証内容】
> 1トランザクション内で大量SQL(SELECT文やINSERT文)を実行する
> アプリケーション(java)について、DB直接接続の場合と
> Pgpool接続の場合で、処理時間を測定。
>
> DB直接接続:全体処理時間00:00:30秒(1SQLあたり約3ミリ秒)
> Pgpool接続:全体処理時間00:02:58秒(1SQLあたり約19ミリ秒)
> ⇒pgpool接続の方が1SQLあたり約16ミリ秒遅い
>
> 【ご相談事項】
> ・pgpoolを経由すると、1SQLあたりの処理時間が多く(約6倍)
> かかっているのですが、これは妥当なものなのでしょうか?
> ・Pgpoolで負荷分散とコネクションプールを行わない前提で、
> Pgpoolのチューニングにより性能改善策などは考えられますでしょうか?
>
> 何かお気づきの点や設定の勘所等をご教示いただければ幸いです。
> よろしくお願いいたします。
>
>
> _______________________________________________
> pgpool-general-jp mailing list
> pgpool-general-jp @ sraoss.jp
> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp
pgpool-general-jp メーリングリストの案内