#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. Это требует более глубокого анализа, и на него нельзя дать однозначный ответ.