8

近い将来、データベースの負荷分散が必要になるPython/Djangoアプリがあります。その間、ローカル仮想マシンのセットアップにpgpoolを実装する方法を学ぼうとしています。

私は4つのUbuntu12.04VMを持っています:

192.168.1.80 <- pool, pgppool2 installed and accessible
192.168.1.81 <- db1 master
192.168.1.82 <- db2 slave
192.168.1.83 <- db3 slave

pgpool-IIバージョン3.1.1を使用しており、データベースサーバーはPostgreSQL9.1を実行しています。

アプリのデータベース接続が192.168.1.80:9999を指しているので、正常に動作します。

問題は、Apache abを使用して負荷をかけると、SELECTクエリのいずれもバランスが取れていないように見えることです。すべての負荷は私のdb1マスターに行きます。また、プールサーバー自体の負荷が非常に懸念されます。これは、db1と比較して非常に高く、おそらく平均で8〜10倍高くなります。一方、私のdb2およびdb3サーバーの負荷はほぼゼロであり、db1からのみ複製しているように見えます。これは、abを使用したテストではそれほど負荷がかかりません。

ab -n 300 -c 4 -C 'sessionid=80a5fd3b6bb59051515e734326735f80' http://192.168.1.17:8000/contacts/

これにより、プールサーバーの負荷が最大約2.3になります。db1の負荷は約0.4で、db2とdb3の負荷はほぼゼロです。

誰かが私の設定を見て、私が間違っているかどうかを確認できますか?

backend_hostname0 = '192.168.1.81'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/var/lib/postgresql/9.1/main'
backend_flag0 = 'ALLOW_TO_FAILOVER'

backend_hostname1 = '192.168.1.82'
backend_port1 = 5433
backend_weight1 = 1
backend_data_directory1 = '/var/lib/postgresql/9.1/main'
backend_flag1 = 'ALLOW_TO_FAILOVER'

backend_hostname2 = '192.168.1.83'
backend_port2 = 5434
backend_weight2 = 1
backend_data_directory2 = '/var/lib/postgresql/9.1/main'
backend_flag2 = 'ALLOW_TO_FAILOVER'

load_balance_mode = on

私の全体の設定はここにあります:

http://pastebin.com/raw.php?i=wzBc0aSp
4

1 に答える 1

8

必要だった

replication_mode = off
master_slave_mode = on

石井辰夫に感謝します。

http://www.pgpool.net/pipermail/pgpool-general/2013-January/001309.html

于 2013-01-07T00:04:50.603 に答える