实际上,我正在运行四个守护程序。它使postgres连接,并且它与东西断开连接。但是当我使用ps aux时,我的系统中运行了很多postgres空闲进程。我只是想知道,每个空闲postres进程的创始人。所以,我可以找出哪个进程没有正确关闭postgres连接。
先谢谢。
答案 0 :(得分:4)
使用以下命令
netstat -ntp
它将显示postgres连接器创建者的进程ID和进程名称。
答案 1 :(得分:2)
如果您使用的是postgresql 9.0,请在连接时设置“应用程序名称”属性,以便区分每个服务器进程正在与之通信的客户端进程。例如(Perl):
$dbh = DBI->connect("dbi:Pg:application_name=test/$$", undef, undef)
这将在应用程序名称中包含客户端PID,这很丑陋但有效。
如果您通过TCP / IP进行连接,则pg_stat_activity
包含可与lsof
(或netstat -p
)一起使用的客户端端口,以查找客户端进程。
答案 2 :(得分:0)
请参阅How can you get the active users connected to a postgreSQL database via SQL?
可以获取已连接进程的pid和uid