3

实际上,我正在运行四个守护程序。它建立了 postgres 连接,并与这些东西断开了一次连接。但是当我放置 ps aux 时,我的系统中有很多 postgres 空闲进程正在运行。我只想知道,每个空闲 postres 进程的发起者。所以,我可以找出哪个进程没有正确关闭 postgres 连接。

提前致谢 。

4

3 回答 3

4

使用以下命令

netstat -ntp

它将显示 postgres 连接器创建者的进程 ID 和进程名称。

于 2010-12-01T09:53:16.640 回答
2

如果您使用的是 postgresql 9.0,请在连接时设置“应用程序名称”属性,以便您可以区分每个服务器进程正在与哪个客户端进程通信。例如(Perl):

$dbh = DBI->connect("dbi:Pg:application_name=test/$$", undef, undef)

这将在应用程序名称中包含客户端 PID,虽然丑陋但有效。

如果您通过 TCP/IP 进行连接,则pg_stat_activity包括客户端端口,您可以使用lsof(或netstat -p)来查找客户端进程。

于 2010-11-30T16:24:42.360 回答
0

请参阅如何让活动用户通过 SQL 连接到 postgreSQL 数据库?

可以获取连接进程的pid和uid

于 2010-11-30T12:03:47.153 回答