Postgresql умирает при 235 одновременных подключениях

#postgresql

#postgresql

Вопрос:

Я установил postgresql на виртуальной машине Azure и запускаю тесты, чтобы проверить, может ли postgresql поддерживать ожидаемую нагрузку. Я увеличил значение max_connections до 1000, но когда я запускаю ab -c 300, postgresql перестает отвечать. Есть ли какие-либо другие настройки, которые я должен изменить? Спасибо, Кейт.

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

1. Вам нужно добавить инструмент объединения пулов соединений, такой как pgbouncer. Postgres не рассчитан на обработку более 100 подключений.

2. Честно говоря, PostgreSQL может обрабатывать 100 подключений, но если все они начнут что-то делать одновременно, вам понадобится 100 ядер процессора, чтобы справиться с этим.

3. Я думаю, вам нужно будет быть более конкретным, чем «умирает», если вам нужна подробная помощь. Что именно происходит?

4. Игорь Ромашенко, ты был мертв 🙂 Вот интересное чтение о том, как Instagram использует PostgreSQL instagram-engineering.tumblr.com/post/13649370142 /…

Ответ №1:

PostgreSQL будет работать лучше всего при гораздо меньшем количестве подключений 1000 на большинстве аппаратных средств. Обычно меньше 100. Если ваше приложение не может поставить работу в очередь с использованием пула соединений, вам следует поместить внешний пул соединений, такой как PgBouncer, между вашим приложением и PostgreSQL.

Смотрите: https://wiki.postgresql.org/wiki/Number_Of_Database_Connections