¿Debo desconectar () si estoy usando connect_cached () de Apache :: DBI?

Mi aplicación de intranet basada en mod_perl2 utilizaDBI->connect_cached() que supuestamente es anulado porApache::DBILa versión de la misma. Normalmente ha funcionado bastante bien, pero recientemente comenzamos a tener un problema en nuestro servidor de prueba, que tenía solo dos usuarios conectados, por lo que nuestra aplicación a veces, pero no siempre, moría al intentar recargar una página con 'FATAL: Lo siento, muchos clientes ya se están conectando a nuestro backend postgres 9.0, a pesar de que todos ellos están<IDLE> Si miro las estadísticas en pgadmin3.

El backend está separado de nuestros backends de desarrollo y producción, pero todos están configurados conmax_connections = 100. Del mismo modo, todos los servicios httpd están separados, pero configurados con

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

Tenía la impresión de que no debería llamardisconnect() en mis manejadores de base de datos si quisiera que realmente se beneficiaran del almacenamiento en caché. ¿Estaba equivocado sobre eso? Si no, supongo que preguntaré por el error anterior por separado. Solo quería asegurarme de que no era esta configuración ...

Apache :: documentos de DBI decir:

Al cargar el módulo DBI (no confunda esto con el módulo Apache :: DBI), comprueba si la variable de entorno 'MOD_PERL' se ha configurado y si el módulo Apache :: DBI se ha cargado. En este caso, todas las solicitudes de conexión se reenviarán al módulo Apache :: DBI. .... No es necesario eliminar las declaraciones de desconexión de su código. No harán nada porque el módulo Apache :: DBI sobrecarga el método de desconexión.

Si está desarrollando un nuevo código que se usa estrictamente en mod_perl, puede elegir usar DBI-> connect_cached () en su lugar, pero considere agregar una reversión automática después de cada solicitud, como se describe anteriormente.

Así que supongo que para mi aplicación solo mod_perl2, no necesito Apache :: DBI porque los desarrolladores de Apache :: DBI recomiendan usar DBI-> connect_cached. Y no necesito desconectar sentencias.

Pero entoncesDocumentos de DBI decir:

Tenga en cuenta que el comportamiento de [connect_cached] difiere en varios aspectos del comportamiento de las conexiones persistentes implementadas por Apache :: DBI. Sin embargo, si se carga Apache :: DBI, connect_cached lo usará.

Esto hace que parezca que Apache :: DBI realmente afectará a connect_cached, ya que en lugar de obtener DBI-> connect_cached cuando lo llame, obtendré Apache :: DBI-> connect. Y los documentos de Apache :: DBI recomiendan contra eso.

ACTUALIZACIÓN: He establecido los primeros 5 parámetros en la configuración anterior todos en 1, y mi aplicación todavía está utilizando más y más conexiones a medida que llego a sus páginas. Esto no lo entiendo en absoluto: solo debe tener un proceso, y ese proceso debe estar reutilizando su conexión.

Respuestas a la pregunta(1)

Su respuesta a la pregunta