Как повысить производительность postgres / pgbouncer

#postgresql #connection-pooling #pgbouncer

Вопрос:

У меня есть сервер с базой данных postgresql и пулом соединений pgbouncer. Я тестировал с помощью jmeter свой сервер с различными настройками pgbouncer, и мне удалось выполнить 5000 «одновременных» запросов без каких-либо ошибок. На данный момент этот результат хорош, но однажды я бы приблизился к его пределам, и я хотел бы знать, как я могу увеличить эти пределы ? Для получения этих ограничений я поставил этот параметр для pgbouncer / psql :

  • MAX_CLIENT_CONN = 100000
  • DEFAULT_POOL_SIZE = 50000

Насыщает не мой процессор или память… Существуют ли какие-либо решения для развертывания нескольких экземпляров psql или pgbouncer для улучшения этих результатов?

Комментарии:

1. Не устанавливайте default_pool_size намного больше, чем количество ядер в вашей машине. Обычно существует только вертикальное масштабирование с реляционными базами данных, то есть становится более мощной машиной. Горизонтальное масштабирование (= сегментирование) является сложным и не всегда возможным.

2. Спасибо @LaurenzAlbe, значит, у меня нет возможности улучшить производительность моей базы данных?

3. Существует множество способов повысить производительность. Но это невозможно определить с помощью тех немногих данных, которыми мы располагаем. Во-первых, если вы настроите запросы на более короткие, вы сможете обрабатывать их больше за одно и то же время. Однако случайное увеличение размера пула соединений будет иметь неблагоприятные последствия, когда вы находитесь под нагрузкой.

4. Хорошо , спасибо @LaurenzAlbe, потому что моя база данных работает нормально, когда я выполняю один запрос, но, например, если я выполняю 1000 запросов одновременно, время отклика составляет 1,2 секунды, а иногда я даже получаю ошибку. Каковы решения для достижения этой цели? Я пробовал использовать индексы, но это ничего не меняет.

5. Это требует более глубокого анализа, и на него нельзя дать однозначный ответ.