Постоянное соединение 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, но управление параллелизмом может иметь решающее значение для обеспечения быстрой работы. Поэтому я бы начал с постоянных соединений, а затем перешел бы в пул соединений, если мне понадобился какой-то дополнительный контроль.
Существенные недостатки заключаются в том, что существуют определенные операции с базой данных, которые нельзя выполнять, когда другие подключены к базе данных. Если вам когда-либо понадобится восстановить данные из резервной копии, возможно, вам необходимо сначала отключить веб-приложение.