实际上,我正在运行四个守护程序。它建立了 postgres 连接,并与这些东西断开了一次连接。但是当我放置 ps aux 时,我的系统中有很多 postgres 空闲进程正在运行。我只想知道,每个空闲 postres 进程的发起者。所以,我可以找出哪个进程没有正确关闭 postgres 连接。
提前致谢 。
实际上,我正在运行四个守护程序。它建立了 postgres 连接,并与这些东西断开了一次连接。但是当我放置 ps aux 时,我的系统中有很多 postgres 空闲进程正在运行。我只想知道,每个空闲 postres 进程的发起者。所以,我可以找出哪个进程没有正确关闭 postgres 连接。
提前致谢 。
使用以下命令
netstat -ntp
它将显示 postgres 连接器创建者的进程 ID 和进程名称。
如果您使用的是 postgresql 9.0,请在连接时设置“应用程序名称”属性,以便您可以区分每个服务器进程正在与哪个客户端进程通信。例如(Perl):
$dbh = DBI->connect("dbi:Pg:application_name=test/$$", undef, undef)
这将在应用程序名称中包含客户端 PID,虽然丑陋但有效。
如果您通过 TCP/IP 进行连接,则pg_stat_activity
包括客户端端口,您可以使用lsof
(或netstat -p
)来查找客户端进程。
请参阅如何让活动用户通过 SQL 连接到 postgreSQL 数据库?
可以获取连接进程的pid和uid