[pgpool-general-jp: 1341] Re: pgpool-II_3.4.0の仕様について

Kazuki Uehara uehara.kazuki @ lab.ntt.co.jp
2015年 1月 9日 (金) 16:31:06 JST


石井さま

上原です。
お世話になっております。

ご確認いただきありがとうございます。

>> ■3 redirect_listの内容が不正な場合、ロードバランシングはされない?

申し訳ありません。
こちらの条件等の説明が不足しておりましたので、訂正させていただきます。

お手数をお掛けして申し訳ありませんが、再度ご確認いただけないでしょうか。

以下の2パターンでのロードバランシングの挙動を確認した結果は
仕様どおりのものかご確認いただけると幸いです。

パターン1 database_redirect_preference_list = 'testdb1:abcd&testdb2:1'
結果:testdb1へのSQLは全てプライマリで実行される。
   testdb2へのSQLはロードバランシングされる。

パターン2 database_redirect_preference_list = ':0,testdb2:1'
結果:testdb1へのSQLは全てプライマリで実行される。
   testdb2へのSQLは全てプライマリで実行される。



以下、確認用のコマンドと抜粋したログを載せております。

-------------------------

パターン1

■pgpool.confの設定
database_redirect_preference_list = 'testdb1:abcd&testdb2:1'

■確認用のコマンド
for i in {1..10}; do psql -p 9999 testdb1 -c "select 'testdb1:act_$i'" ; done
for i in {1..10}; do psql -p 9999 testdb2 -c "select 'testdb2:act_$i'" ; done

■pgpool.log(抜粋)
2015-01-09 16:04:52: pid 15454: LOG:  DB node id: 0 backend pid: 15462 statement: select 'testdb1:act_1'
2015-01-09 16:04:52: pid 15454: LOG:  DB node id: 0 backend pid: 15462 statement: select 'testdb1:act_2'
2015-01-09 16:04:52: pid 15454: LOG:  DB node id: 0 backend pid: 15462 statement: select 'testdb1:act_3'
2015-01-09 16:04:52: pid 15454: LOG:  DB node id: 0 backend pid: 15462 statement: select 'testdb1:act_4'
2015-01-09 16:04:52: pid 15454: LOG:  DB node id: 0 backend pid: 15462 statement: select 'testdb1:act_5'
2015-01-09 16:04:52: pid 15454: LOG:  DB node id: 0 backend pid: 15462 statement: select 'testdb1:act_6'
2015-01-09 16:04:52: pid 15454: LOG:  DB node id: 0 backend pid: 15462 statement: select 'testdb1:act_7'
2015-01-09 16:04:52: pid 15454: LOG:  DB node id: 0 backend pid: 15462 statement: select 'testdb1:act_8'
2015-01-09 16:04:52: pid 15454: LOG:  DB node id: 0 backend pid: 15462 statement: select 'testdb1:act_9'
2015-01-09 16:04:52: pid 15454: LOG:  DB node id: 0 backend pid: 15462 statement: select 'testdb1:act_10'

2015-01-09 16:05:07: pid 15454: LOG:  DB node id: 0 backend pid: 15476 statement: select 'testdb2:act_1'
2015-01-09 16:05:07: pid 15454: LOG:  DB node id: 0 backend pid: 15476 statement: select 'testdb2:act_2'
2015-01-09 16:05:07: pid 15454: LOG:  DB node id: 1 backend pid: 15477 statement: select 'testdb2:act_3'
2015-01-09 16:05:07: pid 15454: LOG:  DB node id: 0 backend pid: 15476 statement: select 'testdb2:act_4'
2015-01-09 16:05:07: pid 15454: LOG:  DB node id: 1 backend pid: 15477 statement: select 'testdb2:act_5'
2015-01-09 16:05:07: pid 15454: LOG:  DB node id: 1 backend pid: 15477 statement: select 'testdb2:act_6'
2015-01-09 16:05:07: pid 15454: LOG:  DB node id: 1 backend pid: 15477 statement: select 'testdb2:act_7'
2015-01-09 16:05:07: pid 15454: LOG:  DB node id: 0 backend pid: 15476 statement: select 'testdb2:act_8'
2015-01-09 16:05:07: pid 15454: LOG:  DB node id: 0 backend pid: 15476 statement: select 'testdb2:act_9'
2015-01-09 16:05:07: pid 15454: LOG:  DB node id: 0 backend pid: 15476 statement: select 'testdb2:act_10'

---------------
パターン2

■pgpool.confの設定
database_redirect_preference_list = ':0,testdb2:1'

■確認用のコマンド
for i in {1..10}; do psql -p 9999 testdb1 -c "select 'testdb1:act_$i'" ; done
for i in {1..10}; do psql -p 9999 testdb2 -c "select 'testdb2:act_$i'" ; done

■pgpool.log(抜粋)
2015-01-09 16:09:30: pid 15563: LOG:  DB node id: 0 backend pid: 15570 statement: select 'testdb1:act_1'
2015-01-09 16:09:30: pid 15563: LOG:  DB node id: 0 backend pid: 15570 statement: select 'testdb1:act_2'
2015-01-09 16:09:30: pid 15563: LOG:  DB node id: 0 backend pid: 15570 statement: select 'testdb1:act_3'
2015-01-09 16:09:30: pid 15563: LOG:  DB node id: 0 backend pid: 15570 statement: select 'testdb1:act_4'
2015-01-09 16:09:30: pid 15563: LOG:  DB node id: 0 backend pid: 15570 statement: select 'testdb1:act_5'
2015-01-09 16:09:30: pid 15563: LOG:  DB node id: 0 backend pid: 15570 statement: select 'testdb1:act_6'
2015-01-09 16:09:30: pid 15563: LOG:  DB node id: 0 backend pid: 15570 statement: select 'testdb1:act_7'
2015-01-09 16:09:30: pid 15563: LOG:  DB node id: 0 backend pid: 15570 statement: select 'testdb1:act_8'
2015-01-09 16:09:30: pid 15563: LOG:  DB node id: 0 backend pid: 15570 statement: select 'testdb1:act_9'
2015-01-09 16:09:30: pid 15563: LOG:  DB node id: 0 backend pid: 15570 statement: select 'testdb1:act_10'

2015-01-09 16:09:35: pid 15563: LOG:  DB node id: 0 backend pid: 15582 statement: select 'testdb2:act_1'
2015-01-09 16:09:35: pid 15563: LOG:  DB node id: 0 backend pid: 15582 statement: select 'testdb2:act_2'
2015-01-09 16:09:35: pid 15563: LOG:  DB node id: 0 backend pid: 15582 statement: select 'testdb2:act_3'
2015-01-09 16:09:35: pid 15563: LOG:  DB node id: 0 backend pid: 15582 statement: select 'testdb2:act_4'
2015-01-09 16:09:35: pid 15563: LOG:  DB node id: 0 backend pid: 15582 statement: select 'testdb2:act_5'
2015-01-09 16:09:35: pid 15563: LOG:  DB node id: 0 backend pid: 15582 statement: select 'testdb2:act_6'
2015-01-09 16:09:35: pid 15563: LOG:  DB node id: 0 backend pid: 15582 statement: select 'testdb2:act_7'
2015-01-09 16:09:35: pid 15563: LOG:  DB node id: 0 backend pid: 15582 statement: select 'testdb2:act_8'
2015-01-09 16:09:35: pid 15563: LOG:  DB node id: 0 backend pid: 15582 statement: select 'testdb2:act_9'
2015-01-09 16:09:35: pid 15563: LOG:  DB node id: 0 backend pid: 15582 statement: select 'testdb2:act_10'
-------------------------

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


(2015/01/09 8:43), Tatsuo Ishii wrote:
> 石井です。
> 
>> 初めて投稿させていただきます。
>> 上原と申します。
>>
>> pgpool-II 3.4.0の仕様についていくつか不明な点があります。
>> 下記の内容について、ご教授いただけないでしょうか。
>>
>> ■1 ドキュメントバグ?
>> client_min_messagesの選択範囲にFATAL、PANICがマニュアルに記載されて
>> いますが、設定できません。(設定した場合、エラーになります)
>> ソースを確認した限り、FATAL、PANICは対象にしていないのですが、
>> ドキュメントとソースのどちらが仕様として正しいのでしょうか。
>>
>> ■2 client_min_messagesが制御するメッセージは何か?
>> PostgreSQLからClientに返されるメッセージを制御するものとして考えて
>> いましたが、設定を変更しても出力内容に変化がありません。
>>
>> ソースを確認したところ、そもそも制御が行われていないように見えますが
>> いかがでしょうか。whereToSendOutputは初期値'DestDebug'のままで変更
>> されることがないため、下記の処理が行われていないという認識ですが、
>> 合っているでしょうか。
>>
>> src/utils/error/elog.c
>> 285         /* Determine whether message is enabled for client output */
>> 286         if (whereToSendOutput == DestRemote&&  elevel != COMMERROR)
>> 287         {
>> 288                 /*
>> 289                  * client_min_messages is honored only after we complete the
>> 290                  * authentication handshake.  This is required both for security
>> 291                  * reasons and because many clients can't handle NOTICE messages
>> 292                  * during authentication.
>> 293                  */
>> 294         output_to_client = (elevel>= pool_config->client_min_messages ||
>> 295                                                                 elevel == INFO);
>> 296         }
> 
> 以上、確認させていただきますので少々お待ちください。
> 
>> ■3 redirect_listの内容が不正な場合、ロードバランシングはされない?
>> redirect_listを不正な値(例 testdb01:abcde&testdb02:1等)に
>> 設定した場合、ロードバランシングはされず、全てマスタに対してのみSQLが
>> 実行されますが、これは仕様通りの挙動でしょうか?
> 
> この現象は当方では再現できませんでした。
> 
> database_redirect_preference_list = 'testdb01:abcde&testdb02:1'
> 
> をpgpool.confに設定し、select 1を実行すると、普通にすべてのDBノードに負
> 荷分散されました。
> 
>> 仕様の場合、ログに「設定値が不正なのでマスタに対して実行する」等の
>> メッセージを出力があるか、または、マニュアルに設定値が不正の場合の挙動に
>> ついて一言記載していただけると幸いです。
>>
>>
>> 以上です。
>> よろしくお願いします。
>>
>> -- 
>> 上原 一樹 (Kazuki Uehara)
>> Mail : uehara.kazuki @ lab.ntt.co.jp
>>
>> _______________________________________________
>> pgpool-general-jp mailing list
>> pgpool-general-jp @ sraoss.jp
>> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp


-- 
上原 一樹 (Kazuki Uehara)
Mail : uehara.kazuki @ lab.ntt.co.jp
Phone: 03-5860-5115



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