Пул подключений в apache (веб-сервер) - PullRequest
0 голосов
/ 25 августа 2009

Я хочу реализовать пул соединений в своем веб-приложении. Пожалуйста, как мне это реализовать?

Ответы [ 2 ]

2 голосов
/ 25 августа 2009

Я бы сказал, что у вас есть две проблемы:

  • Вы не знаете, нужен ли вам пул соединений или нет

и

  • Если вы обнаружите, что это необходимо, вы не знаете, как это осуществить.

Сначала я бы предположил, что вам это не нужно, повторное использование соединений - это (возможно, преждевременная) оптимизация.

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

  • Если ваше приложение "в процессе" с Apache, у вас действительно нет другого выбора, кроме как одно соединение на процесс (или поток)
  • Если ваше приложение «вне процесса», например, подключаясь к Tomcat через mod_jk, вы можете делать то, что вам нравится, на сервере приложений (Tomcat), который может включать в себя пул соединений, которые будут использоваться между несколькими потоками в зависимости от ситуации.

Причины использования нового подключения каждый раз:

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

Единственной веской причиной для повторного использования соединений является само время ожидания соединения.

Некоторые базы данных относительно медленно создают соединения (Oracle), другие гораздо быстрее (MySQL). Некоторые базы данных могут быть настроены так, чтобы внутренне поддерживать пул потоков, которые они используют (MySQL), что делает соединение еще быстрее.

0 голосов
/ 07 октября 2009

Хотя у меня нет однозначного ответа (и я тоже его ищу), я могу предложить следующее (для серверной части Perl):

  • если вы используете mod_perl2, взгляните на Apache :: DBI (http://metacpan.org/pod/Apache::DBI). У него есть некоторые недостатки, которые перечислены на странице.
  • если вы используете Perl DBI для подключения к вашей базе данных, то вместо вызова метода connect () используйте вызов метода connect_cached ().
...