ChatGPT解决这个技术问题 Extra ChatGPT

How to list active connections on PostgreSQL?

Is there a command in PostgreSQL to select active connections to a given database?

psql states that I can't drop one of my databases because there are active connections to it, so I would like to see what the connections are (and from which machines)

Great! i search (badly) and don't found anything. Can i do something to close others idle connection?

T
Tregoreg

Oh, I just found that command on PostgreSQL forum:

SELECT * FROM pg_stat_activity;

If you would like to limit it to just one database, you can use SELECT * FROM pg_stat_activity WHERE datname = 'dbname';
How can i get the active database connection from the specific backed service?
And how about after running pg_terminate_backend and my app is still able to run query against the db but I could not see the new connections in pg_Stat_activity?
if you want to make the output more human readable, run \x on; first.
p
pdoherty926

Following will give you active connections/ queries in postgres DB-

SELECT 
    pid
    ,datname
    ,usename
    ,application_name
    ,client_hostname
    ,client_port
    ,backend_start
    ,query_start
    ,query
    ,state
FROM pg_stat_activity
WHERE state = 'active';

You may use 'idle' instead of active to get already executed connections/queries.


Does idle means connection is active?. If I m releasing connection, still will it be listed as idle?
Yes @ShivamKubde but as 'idle', and the query above only show 'active' connections, so remove the WHERE ... clause and to be able to see what connections are active or idle add the column state to the SELECT clause
hey i am trying to understand why PGSQl throws me the following error: [2021-04-08 09:52:04] [53300] FATAL: sorry, too many clients already. is there someone familiar with the problem please ?
A
Abdollah
SELECT * FROM pg_stat_activity WHERE datname = 'dbname' and state = 'active';

Since pg_stat_activity contains connection statistics of all databases having any state, either idle or active, database name and connection state should be included in the query to get the desired output.


s
santosh tiwary

You can check connection details in Postgres using pg_stat_activity. You can apply filter to satisfy your condition. Below are queries. References: https://orahow.com/check-active-connections-in-postgresql/

SELECT * FROM pg_stat_activity WHERE state = 'active';
select * from pg_stat_activity where state = 'active' and datname = 'REPLACE_DB_NAME_HERE';