任务管理器中的许多 PostgreSQL 进程

Many PostgreSQL processes in Task Manager

我们有一个安装了 PostgreSQL 9.1 32 位的 Windows Server 2012,任务管理器显示了几个名为 "PostgreSQL Server (32 bit)" 的 "processes",它们吃掉了很多 CPU(有时 99%)。一段时间后,此类 PostgreSQL 进程在 CPU 使用率中显示为 0%,并占用了一些内存,但它们仍保留在任务管理器中。

具体是什么意思?

服务器运行一个网站(在 IIS 8 上),访问者连接主要是为了获取 (SELECT) 数据。一些用户(3 个管理员用户)连接到数据库以执行所有 CRUD 操作。

此致, 豪尔赫·马尔多纳多

每次发生连接时,Postgresql 都会分叉他的主进程。这就是为什么你可以获得很多postgresql进程。

现在,根据那些连接上 运行 的查询,它可能会使用大量 CPU and/or 内存。

我猜你也在你的应用程序中使用了一个池,这意味着当用户完成他的进程时,连接返回到池并且 postgresql 进程将不做任何事情直到池终止连接或连接被关闭被另一个用户重复使用。

如果启用某些日志(连接日志、响应时间> 一定量时的查询日志、临时文件使用情况、锁定等),您稍后可以运行 像 pgbadger 这样的报告(example here) 检查是否有查询太慢或使用太多内存(最差:临时文件)