Comment utiliser tcp_keepalives paramètres dans Postgresql?
Postgresql dispose de 3 keepalive paramètres pour la gestion des connexions perdues (dans postgresql.conf):
tcp_keepalives_count
tcp_keepalives_idle
tcp_keepalives_interval
Par défaut ce sont des 0.
Le comportement que je voudrais, c'est pour Postgresql pour déposer les connexions client après une période de temps, le client devrait-il perdre sa connexion réseau ou d'aller dormir.
Je suis actuellement en utilisant ces valeurs:
tcp_keepalives_count = 1
tcp_keepalives_idle = 60
tcp_keepalives_interval = 60
Je suis en cours d'exécution PostgreSQL 8.4 sur Mac OS X, mais il ne semble pas avoir d'effet. Mon test est que je verrouiller une ligne dans une table (à l'aide de SELECT FOR UPDATE) et débranchez la station de travail du réseau. Mais dans Postgresql, je vois toujours cette station de travail est maintenant le verrou.
Je m'attends à ce que, après le temps a passé (60 secondes dans ce cas), la connexion serait résilié et le verrou doit être libéré.
Soit je fais quelque chose de mal ou je suis ne comprends pas comment c'est censé fonctionner.
Des conseils?
OriginalL'auteur Paul Lefebvre | 2010-01-30
Vous devez vous connecter pour publier un commentaire.
Je pense que vous avez besoin pour configurer votre système d'exploitation à la place. Modification de la directive keepalive paramètres par les programmes est largement pas encore pris en charge. Cela devrait vous aider à:
À l'aide de TCP keepalive pour Détecter les Erreurs de Réseau
Aussi vos paramètres sont choisis mal. Si
tcp_keepalives_count=1
travaillait alors même perdu keepalive paquet va baisser votre connexion. Et seul les paquets se perdent souvent. J'aimerais utiliser les éléments suivants dans/etc/sysctl.conf
sur MacOSX/FreeBSD:net.inet.tcp.keepidle = 60000
net.inet.tcp.keepintvl = 10000
OS sera alors supprimer des connexions à plus de 140 secondes (60 secondes d'inactivité + 8 persistantes paquets de 10 secondes) après avoir perdu la connectivité.
OriginalL'auteur Tometzky