Должен ли я отключить (), если я использую Apache :: DBI's connect_cached ()?

Мое приложение для интрасети на основе mod_perl2 используетDBI->connect_cached() который предположительно отмененApache::DBIверсия та же. Обычно он работал довольно хорошо, но совсем недавно у нас возникла проблема на нашем тестовом сервере, к которому были подключены только два пользователя, в результате чего наше приложение иногда, но не всегда, умирало при попытке перезагрузить страницу с помощью 'FATAL: извините, слишком много клиентов уже подключение к нашему бэкэнду Postgres 9.0, несмотря на то, что все они если я посмотрю статистику в pgadmin3.

Бэкэнд отделен от наших бэкэндов разработки и производства, но онивсе настроено сmax_connections = 100, Аналогично, все службы httpd разделены, но настроены с

StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      99
MaxClients       99
MaxRequestsPerChild  4000
....
PerlModule Apache::DBI

У меня сложилось впечатление, что я не должент звонокdisconnect() в моей базе данных, если бы я хотел, чтобы они действительно выиграли от кэширования. Был ли я неправ в этом? Если нет, то я думаю,Спрошу про вышеуказанную ошибку отдельно. Просто хотел убедиться, что это нет эта настройка ...

Apache :: DBI»документы сказать:

При загрузке модуля DBI (не путайте это с модулем Apache :: DBI) он проверяет, является ли переменная окружения 'MOD_PERL» было установлено, и если модуль Apache :: DBI был загружен. В этом случае каждый запрос на подключение будет перенаправлен в модуль Apache :: DBI. .... Нет необходимости удалять операторы отключения из вашего кода. Они выиграли'ничего не делать, потому что модуль Apache :: DBI перегружает метод отсоединения.

Если вы разрабатываете новый код, предназначенный исключительно для использования в mod_perl, вы можете использовать DBI->Вместо этого connect_cached (), но рассмотрите возможность добавления автоматического отката после каждого запроса, как описано выше.

Так что я думаю, что для моего приложения только для mod_perl2 я ненужен Apache :: DBI, потому что Apache :: DBI 'Разработчики рекомендуют использовать DBI->connect_cached. И я нене нужно отключать заявления.

Но потомDBI»документы сказать:

Обратите внимание, что поведение [connect_cached] отличается в нескольких отношениях от поведения постоянных соединений, реализованных Apache :: DBI. Однако, если Apache :: DBI загружен, connect_cached будет использовать его.

Это звучит так, как будто Apache :: DBI будет влиять на connect_cached, вместо этого вместо получения DBI->Поведение connect_cached, когда я это называюполучу Apache :: DBI->подключить поведение. И Apache :: DBI 'Документы рекомендую против этого.

ОБНОВЛЕНИЕ: яя установил первые 5 параметров в вышеупомянутой конфигурации все на 1, и мое приложение все еще использует все больше и больше соединений, когда я нажимаю на его страницы. Это я невообще не понимаю - у него должен быть только один процесс, и что один процесс должен повторно использовать свое соединение.

Ответы на вопрос(1)

Ваш ответ на вопрос