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

use*_*248 5 postgresql iis-8

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

它究竟意味着什么?

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

最好的问候, 豪尔赫·马尔多纳多

war*_*gre 3

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

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

我猜您还在应用程序中使用池,这意味着当用户完成其进程时,连接将返回到池,并且 postgresql 进程将不执行任何操作,直到池终止连接或连接被另一个用户重用。

如果您启用某些日志(连接日志、响应时间 > 一定量时的查询日志、临时文件使用情况、锁定等),您可以稍后运行 pgbadger 之类的报告(此处示例)来检查是否存在太长的查询速度慢或使用太多内存(最差:临时文件)