Постоянное соединение PostgreSQL: полезно в моем случае?

У меня есть PHP приложение, которое вызывается с GET parameters работает с PG and nginx, Страница A получает сообщение и некоторую информацию. Страница B делает маршрутизацию. Страница C вызывает внешнее приложение с CURL. Когда я начну работать, я буду получать до 1-2 миллионов запросов в месяц.

Мой вопрос касается функции pg_pconnect. Повторно ли используется соединение, если есть звонки из другого места? Я имею в виду, лучше ли сделать простое соединение и закрывать его каждый раз для страницы A? (серверы из разных мест будут вызывать мое приложение) Для страниц B и C скрипт будет вызывать их в бесконечном цикле (ожидание 10 секунд, если нет сообщения для обработки). Поскольку запросы всегда будут приходить из одного и того же места, стоит ли использовать постоянное соединение для страницы B & C?

Я надеюсь, что мое объяснение достаточно ясно.

Спасибо!

1 ответ

Решение

В целом, я думаю, что в вашем случае вы, вероятно, увидите некоторые преимущества от постоянных соединений. Есть и недостатки, но они выполнимы, если вы о них помните. Однако вы можете пойти дальше и рассмотреть фактический пул соединений.

Большая проблема заключается в том, что обычно PostgreSQL работает лучше всего, когда число одновременных подключений составляет менее 2 на ядро ​​ЦП плюс одно на каждый дисковый шпиндель (из-за времени ожидания ввода-вывода). Конечно, это не совсем точно, но дает вам представление о том, чего ожидать от вашего оборудования и ресурсов.

Затраты на запуск / разрыв соединения невелики на платформах Linux/UNIX, но управление параллелизмом может иметь решающее значение для обеспечения быстрой работы. Поэтому я бы начал с постоянных соединений, а затем перешел бы в пул соединений, если мне понадобился какой-то дополнительный контроль.

Существенные недостатки заключаются в том, что существуют определенные операции с базой данных, которые нельзя выполнять, когда другие подключены к базе данных. Если вам когда-либо понадобится восстановить данные из резервной копии, возможно, вам необходимо сначала отключить веб-приложение.

Другие вопросы по тегам