PGPool II + Django с балансировкой нагрузки psycopg2 - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть пул приложений, работающих под управлением django 1.6 с psycopg2 поверх PGPool II с двумя внутренними серверами PostgreSQL. Но все запросы (чтение и / или запись) собираются на master PostgreSQL даже SELECT.

Как мы можем видеть в документации PGPool II , если мы читали запросы в транзакции, нам нужно выполнить некоторые условия для балансировки нагрузки или отправки в master. Я знаю, что у нас есть некоторые точки кода, которые мы SELECT включаем в транзакцию, но у нас также есть простые SELECT запросы, которые тоже будут обрабатываться.

Я не уверен, что и при каких условиях мы отправляем все запросы мастеру.

Вот таблица с условиями для балансировки нагрузки:

enter image description here

1 Ответ

0 голосов
/ 10 ноября 2018

Отправка всех запросов мастеру действительно странно. Я не знаю, какую версию вы используете, и укажите, если вы используете "stream" в качестве "master_slave_sub_mode". Позвольте мне предположить, что вы используете версию 4.0.0, а master_slave_sub_mode имеет значение "stream"

load_balance_mode = on
master_slave_sub_mode = 'stream'
replication_mode = off
replicate_select = off
white_function_list = ''
black_function_list = ''
black_query_pattern_list = ''
database_redirect_preference_list = ''
app_name_redirect_preference_list = ''
allow_sql_comments = off
disable_load_balance_on_write = 'transaction'

Не могли бы вы проверить с этой настройкой? И к вашему сведению, 3.7.x имеет некоторые проблемы с балансировкой нагрузки. Я рекомендую вам обновить версию, если вы используете 3.7.x.

...