libpq, la biblioteca de cliente de PostgreSQL subyacente, tiene la keepalivesopción de habilitar TCP keepalives .
Parece que PgAdmin-III no le permite especificar parámetros de conexión arbitrarios directamente, pero hay una solución alternativa.
Cuando observa la configuración de conexión en PgAdmin-III, verá una opción de "servicio". Esto se refiere al archivo del servicio de conexión . Para usarlo, crea un ~/.pg_service.confcontenido como:
[myherokudb]
user=myusername
keepalives=1
connect_timeout=20
keepalives_idle=10
y cuando se conecte desde PgAdmin-III, ingrese myherokudben el servicecampo.
Esto hará que PgAdmin-III use los parámetros de conexión especificados en el archivo de servicio, incluida la habilitación de keepalives.
(Si está en Windows, el archivo de servicio puede estar en otra ubicación; consulte la documentación).
No hay una variable de entorno libpqpara controlar keepalives, por lo que no puede configurarlo de esa manera, tendrá que usar un archivo de servicio.
Agregar soporte para parámetros de conexión adicionales a PgAdmin-III, o una casilla de verificación en las opciones de conexión para controlar el parámetro keepalives, debería ser bastante trivial. Me pregunto si Dave entendió lo que estaba pidiendo sobre su oferta para financiar el trabajo.
Actualización : el archivo de servicio se busca en la ubicación especificada en la PGSYSCONFDIRvariable de entorno. Si no está configurado, el valor predeterminado es una ubicación específica de la plataforma, que no parece estar documentada correctamente para Windows. Enviaré un parche de documentación. La documentación de.pgpass muestra su camino como %APPDATA%\postgresql\pgpass.confsi así ~/.pg_service.conffuera, %APPDATA%\postgresql\pg_service.confpero debería ser ... pero no parece serlo.
De hecho, la ruta correcta es:
%APPDATA%\postgresql\.pg_service.conf
Entonces:
- Inicio-> Ejecutar
- `% APPDATA%
- crear el directorio "postgresql" si no existe
- cree el archivo ".pg_service.conf" como un archivo de texto con los contenidos proporcionados anteriormente (vea la nota a continuación sobre el nombre del archivo)
- En PgAdmin-III, ingrese "localhost" en el nombre del Host y el nombre del servicio en el campo de servicio.
Lo probé en Windows y descubrí que no puede dejar el hostcampo en PgAdmin-III en blanco en Windows. PgAdmin-III parece anular cualquier host especificado en el archivo de servicio con lo que se especifica en el diálogo de conexión. Por lo tanto, no debe incluir una hostclave en el archivo de servicio. (Informaré un error).
Hacer que "ocultar extensiones de archivo para tipos de archivo conocidos" esté desactivado en Windows, para que no lo llame accidentalmente .pg_service.conf.txt. Si no está seguro de si se llama correctamente o no, marque la columna "Tipo" en el Explorador de Windows en la vista de lista; leerá "Documento de texto" si se nombra incorrectamente .pg_service.conf.txty CONF Filesi se nombra correctamente .pg_service.conf. Si tiene problemas para renombrarlo, desactive "ocultar extensiones de archivo para tipos de archivo conocidos", o use un editor de texto sensible como notepad ++ que le permitirá crear archivos con el nombre que desee.
Tenga en cuenta el punto inicial (punto) en el nombre del archivo. Sí, eso es diferente pgpass.confy sí, eso es molesto, rayando en un error.