Verbindungen zwischen Clienten und einer PostgreSQL-Datenbank, die über TCP/IP Kommunikation aufgebaut sind, können auch einem timeout unterliegen.
Die Dokumentation dazu findet man hier: https://www.postgresql.org/docs/9.1/static/libpq-connect.html
Normalerweise gibt man für eine Verbindung zur Datenbank nur Parameter wie
host
port
user
password
dbname
an. Möchte man die Einstellungen für die Verbindung von der Clientseite aus steuern, kann man auch noch mehr Parameter mitgeben. Bezüglich des Timeouts von Verbindungen gibt es:
connect_timeout
keepalives
keepalives_interval
keepalives_count
In connect_timeout kann man angeben wie lange darauf gewartet werden soll bis eine Verbindung hergestellt ist. Bei 0 oder nicht definiert wartet der Client bis zum Sankt-Nimmerleins-Tag. Der Verbindungsaufbau muss dann vom Client aus manuell abgebrochen werden.
keepalives kontrolliert ob eine mal hergestellte TCP/IP Verbindung am Leben erhalten werden soll. Default ist 1 und bedeutet ja.
In keepalives_interval kann mal festlegen wie oft ein Signal über die TCP/IP Verbindung gesendet werden soll, damit diese nicht getrennt wird.
keepalives_count gibt wie oft nacheinander akzeptiert wird, dass eine Verbindung nicht mehr herzustellen ist bevor diese als tot erklärt wird.
Nur wie kann man diese Parameter einstellen und an den Server bei der Verbindungseinstellung mitschicken. Das hängt von dem verwendeten Client ab. Prinzipiell gelten hier die Möglichkeiten, die die libpq Bibliothek mitbringt. Ob der Client diese Möglichkeiten in seiner Benutzeroberfläche aber mitbringt ist nicht selbstverständlich. In pgadmin3 z.B. kann man in der Oberfläche zum Definieren der Verbindung diese Parameter nicht einstellen. Über einen Trick geht das jedoch dennoch.
Es gibt da nämlich einen Parameter Service. Den hat bestimmt schon jeder mal gesehen, der pgadmin verwendet. Da kann man einen Servicenamen angeben zu dem die Verbindungseinstellungen konfiguriert sind.
Die Konfiguration der Verbindung wird in einer Datei ~/.pg_service.conf abgelegt. Falls die nicht im Home-Verzeichnis des Nutzer existiert kann die dort angelegt werden.
Da drin kann man jetzt eine oder mehrere Verbindungsinformationen angeben. Das Format ist INI. In Eckigen Klammern kommt der Servicename und darunter die Parameter. z.B.
[mypgdb]
keepalives=1
In der Verbindungseinstellung braucht man dann nur noch den Servicenamen, hier mypgdb auswählen, siehe Abbildung. |