libpq
Die zugrunde liegenden PostgreSQL - Client - Bibliothek, hat die keepalives
Option TCP Keep Alive zu aktivieren .
Es sieht so aus, als könnten Sie mit PgAdmin-III keine beliebigen Verbindungsparameter direkt angeben, aber es gibt eine Problemumgehung.
Wenn Sie die Verbindungskonfiguration in PgAdmin-III betrachten, wird die Option "Dienst" angezeigt. Dies bezieht sich auf die Verbindungsdienstdatei . Um es zu verwenden, erstellen Sie ein ~/.pg_service.conf
mit folgenden Inhalten:
[myherokudb] user=myusername keepalives=1 connect_timeout=20 keepalives_idle=10
und bei Verbindung von PgAdmin-III myherokudb
in das service
Feld eingeben .
Dies führt dazu, dass PgAdmin-III die in der Servicedatei angegebenen Verbindungsparameter verwendet, einschließlich der Aktivierung von Keepalives.
(Wenn Sie sich unter Windows befinden, befindet sich die Servicedatei möglicherweise an einem anderen Ort. Weitere Informationen finden Sie in der Dokumentation.)
Es gibt keine Umgebungsvariable libpq
, um Keepalives zu steuern. Sie können es also nicht so einstellen. Sie müssen eine Servicedatei verwenden.
Die Unterstützung zusätzlicher Verbindungsparameter für PgAdmin-III oder ein Kontrollkästchen in den Verbindungsoptionen zur Steuerung des Parameters keepalives sollte ziemlich trivial sein. Ich frage mich, ob Dave verstanden hat, was Sie von Ihrem Angebot zur Finanzierung der Arbeit forderten.
Update : Die Servicedatei wird an dem in der PGSYSCONFDIR
Umgebungsvariablen angegebenen Ort gesucht . Wenn nicht festgelegt, wird standardmäßig ein plattformspezifischer Speicherort verwendet, der für Windows nicht ordnungsgemäß dokumentiert zu sein scheint. Ich werde einen Dokumentationspatch einreichen. Die Dokumentation für.pgpass
zeigt den Pfad so %APPDATA%\postgresql\pgpass.conf
, als ~/.pg_service.conf
sollte es sein, %APPDATA%\postgresql\pg_service.conf
aber es scheint nicht so zu sein.
In der Tat lautet der richtige Pfad:
%APPDATA%\postgresql\.pg_service.conf
So:
- Start> Ausführen
- % APPDATA%
- Erstellen Sie das Verzeichnis "postgresql", falls es nicht existiert
- Erstellen Sie die Datei ".pg_service.conf" als Textdatei mit den oben angegebenen Inhalten (siehe Hinweis unten bezüglich Dateinamen).
- Geben Sie in PgAdmin-III als Hostnamen "localhost" und im Feld "Service" den Dienstnamen ein.
Ich habe unter Windows getestet und festgestellt, dass Sie das host
Feld in PgAdmin-III unter Windows nicht leer lassen können. PgAdmin-III scheint jeden in der Servicedatei angegebenen Host mit den Angaben im Verbindungsdialogfeld zu überschreiben. Sie sollten also keinen host
Schlüssel in die Servicedatei aufnehmen. (Ich werde einen Fehler melden).
Die Option "Dateierweiterungen für bekannte Dateitypen ausblenden" ist in Windows deaktiviert, damit Sie sie nicht aus Versehen aufrufen .pg_service.conf.txt
. Wenn Sie nicht sicher sind, ob der Name richtig ist oder nicht, überprüfen Sie die Spalte "Typ" in Windows Explorer in der Listenansicht. Es wird "Textdokument" gelesen, wenn es falsch benannt .pg_service.conf.txt
wurde und CONF File
wenn es richtig benannt wurde .pg_service.conf
. Wenn Sie Probleme beim Umbenennen haben, deaktivieren Sie die Option "Dateierweiterungen für bekannte Dateitypen ausblenden" oder verwenden Sie einen sinnvollen Texteditor wie notepad ++, mit dem Sie Dateien mit beliebigem Namen erstellen können.
Beachten Sie den führenden Punkt (Punkt) im Dateinamen. Ja, das ist anders als pgpass.conf
, und ja, das ist nervig und grenzt an einen Fehler.