Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous,
Je travaille sur une machine de test, en version 8.4.2 sous Red Hat 5.
Je suis en cours de lecture du livre "Admin Cookbook", je suis sur le sujet qui parle de déconnecter un utilisateur.
Je fais des éssais avec pg_terminate_backend() et pg_stat_activity mais je n'arrive pas au bon résultat.
Je me connecte, depuis mon PC XP, sur le serveur et je commence par faire un ps -ef | grep postgres
postgres 2604 1 0 Jan28 ? 00:00:01 /usr/local/pgsql/bin/postmaster -D /home/postgres/PG_DATA
postgres 2606 2604 0 Jan28 ? 00:00:00 postgres: logger process
postgres 2608 2604 0 Jan28 ? 00:00:00 postgres: writer process
postgres 2609 2604 0 Jan28 ? 00:00:00 postgres: wal writer process
postgres 2610 2604 0 Jan28 ? 00:00:00 postgres: autovacuum launcher process
postgres 2611 2604 0 Jan28 ? 00:00:01 postgres: stats collector process
postgres 12053 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(44356) idle
postgres 12056 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(44358) idle
postgres 12218 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(53493) idle
postgres 12219 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(53494) idle
postgres 12221 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(53496) idle
root 19381 2450 0 11:24 ? 00:00:00 sshd: postgres [priv]
postgres 19384 19381 0 11:24 ? 00:00:00 sshd: postgres@pts/1
postgres 19385 19384 0 11:24 pts/1 00:00:00 -bash
postgres 20625 19385 0 12:07 pts/1 00:00:00 ps -ef
postgres 20626 19385 0 12:07 pts/1 00:00:00 grep postgres
Est-il normale de voir autant de chose ?
Ensuite, je lance, depuis mon PC, PgAdmin et je me connecte à une base du serveur, et je relance la commande ps -ef | grep postgres (j'ai remplacé mon adresse IP par [MON IP])
postgres 2604 1 0 Jan28 ? 00:00:01 /usr/local/pgsql/bin/postmaster -D /home/postgres/PG_DATA
postgres 2606 2604 0 Jan28 ? 00:00:00 postgres: logger process
postgres 2608 2604 0 Jan28 ? 00:00:00 postgres: writer process
postgres 2609 2604 0 Jan28 ? 00:00:00 postgres: wal writer process
postgres 2610 2604 0 Jan28 ? 00:00:00 postgres: autovacuum launcher process
postgres 2611 2604 0 Jan28 ? 00:00:01 postgres: stats collector process
postgres 12053 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(44356) idle
postgres 12056 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(44358) idle
postgres 12218 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(53493) idle
postgres 12219 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(53494) idle
postgres 12221 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(53496) idle
root 19381 2450 0 11:24 ? 00:00:00 sshd: postgres [priv]
postgres 19384 19381 0 11:24 ? 00:00:00 sshd: postgres@pts/1
postgres 19385 19384 0 11:24 pts/1 00:00:00 -bash
postgres 20739 2604 0 12:11 ? 00:00:00 postgres: postgres postgres [MON IP](1621) idle
postgres 20740 2604 1 12:11 ? 00:00:00 postgres: postgres geo [MON IP](1622) idle
postgres 20741 19385 0 12:11 pts/1 00:00:00 ps -ef
postgres 20742 19385 0 12:11 pts/1 00:00:00 grep postgres
Je me connecte via psql et je fais un select * from pg_stat_activity;
datid | datname | procpid | usesysid | usename | current_query | waiting | xact_start | query
_start | backend_start | client_addr | client_port
-------+----------+---------+----------+----------+---------------------------------+---------+-------------------------------+---------------
----------------+-------------------------------+----------------+-------------
11564 | postgres | 20739 | 10 | postgres | <IDLE> | f | | 2011-02-03 12:
11:41.487737+01 | 2011-02-03 12:11:41.219511+01 | [MON IP] | 1621
22662 | mabase | 20740 | 10 | postgres | <IDLE> | f | | 2011-02-03 12:
11:41.450619+01 | 2011-02-03 12:11:41.247088+01 | [MON IP] | 1622
22662 | mabase | 20790 | 10 | postgres | select * from pg_stat_activity; | f | 2011-02-03 12:13:59.239447+01 | 2011-02-03 12:
13:59.239447+01 | 2011-02-03 12:13:55.288704+01 | | -1
22662 | mabase | 12053 | 10 | postgres | <IDLE> | f | | 2011-02-02 11:
43:35.830329+01 | 2011-02-02 11:20:21.923329+01 | 127.0.0.1 | 44356
22662 | mabase | 12056 | 10 | postgres | <IDLE> | f | | 2011-02-02 12:
26:11.561325+01 | 2011-02-02 11:20:52.91473+01 | 127.0.0.1 | 44358
22662 | mabase | 12218 | 10 | postgres | <IDLE> | f | | 2011-02-02 11:
27:01.674583+01 | 2011-02-02 11:27:01.659435+01 | 127.0.0.1 | 53493
22662 | mabase | 12219 | 10 | postgres | <IDLE> | f | | 2011-02-02 11:
27:09.920393+01 | 2011-02-02 11:27:09.905238+01 | 127.0.0.1 | 53494
22662 | mabase | 12221 | 10 | postgres | <IDLE> | f | | 2011-02-02 12:
26:16.187483+01 | 2011-02-02 11:27:16.823725+01 | 127.0.0.1 | 53496
(8 rows)
Comment faire pour déconnecter mon PgAdmin ?
J'espère être clair, merci pour les réponses.
Hors ligne
Est-il normale de voir autant de chose ?
Sans plus d'infos, tout ce qu'on peut dire, c'est qu'il n'y a rien d'anormale en tout cas.
Comment faire pour déconnecter mon PgAdmin ?
pgAdmin a établit deux connexions. Une première avec la base postgres, une seconde avec la base mabase. Si vous voulez stopper une connexion, vous devez utiliser la procédure stockée pg_terminate_backend en lui fournissant en paramètre le PID du processus gérant la connexion (colonne procpid dans pg_stat_activity). Par exemple, pour dégager la connexion à la base mabase, il faudrait faire un :
SELECT pg_terminate_backend(20740);
Guillaume.
Hors ligne
Bonjour Guillaume,
Super, j'ai testé et déconnecté mon pgadmin, cela fonctionne, merci.
Concernant la commande PS de départ, je suis seul à utiliser la machine, les 2 seules appli java qui utilise le serveur sont arrêtées, les lignes suivantes sont-elles normales ?
postgres 12053 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(44356) idle
postgres 12056 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(44358) idle
postgres 12218 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(53493) idle
postgres 12219 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(53494) idle
postgres 12221 2604 0 Feb02 ? 00:00:00 postgres: postgres geo 127.0.0.1(53496) idle
Merci pour votre aide.
Hors ligne
Les lignes que vous montrez sont des connexions à la base. Si vous pensez qu'elles n'ont rien à faire là, redémarrez PostgreSQL, c'est le plus simple.
Guillaume.
Hors ligne
Excusez-moi Guillaume, mais le jour où je passe en production, je ne peux certainement pas redémarrer.
Comment peut-il rester des connexions ouvertes ?
N'y a t'il pas un moyen de les fermer automatiquement (par exemple aprés plusieurs heures) ?
Le fait d'avoir des connexions qui restent ouvertes peut-il dégrader les performances ?
Merci.
Hors ligne
Comment peut-il rester des connexions ouvertes ?
Parce que vous avez quelqu'un de connecté dessus.
N'y a t'il pas un moyen de les fermer automatiquement (par exemple aprés plusieurs heures) ?
Pas directement pas PostgreSQL mais il est possible d'avoir un script qui le fait. C'est dangereux mais pourquoi pas. Par exemple, voulez-vous vraiment fermer la connexion d'une sauvegarde même si celle-ci s'exécute depuis plusieurs heures (ce qui est normal dans certains cas).
Le fait d'avoir des connexions qui restent ouvertes peut-il dégrader les performances ?
Si elles ne font rien, non.
Guillaume.
Hors ligne
Vous avez raison, ce peut être dangereux.
Par contre, je suis certains que personne n'est connecté.
A moins que les applis java ne laissent des connexions ouvertes mais quand je quitte. Est-ce possible ?
De plus, ce sont des connexions locales, puisque j'ai "127.0.0.1" comme IP ?
Hors ligne
Oui, c'est bien l'IP du client qui est affiché, donc ce sont bien des connexions locales. Si personne n'est connecté actuellement, ça a pu être dû à un problème réseau ou de firewall. Étant donné que ça concerne l'interface locale, je parierais pour un firewall logiciel qui aurait coupé méchamment la connexion.
Guillaume.
Hors ligne
Pages : 1