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

5
我们有一台安装了PostgreSQL 9.1 32位的Windows Server 2012服务器。任务管理器显示出几个名为“PostgreSQL Server (32 bit)”的“进程”,它们会占用很多CPU(有时高达99%)。经过一段时间,这些PostgreSQL进程的CPU使用率变为0%,但仍然占用一些内存,并保留在任务管理器中。
这到底意味着什么?
该服务器运行着一个网站(在IIS 8上),访问者主要连接以获取(SELECT)数据。少数用户(3个管理员用户)连接到数据库执行所有CRUD操作。
此致, Jorge Maldonado

说实话,这个问题不适合在Stack Overflow上提问。它不仅与编程无关,而且显示了零研究努力。 - 404
请参阅手册中的内容:https://www.postgresql.org/docs/current/static/connect-estab.html,以及此链接http://www.interdb.jp/pg/pgsql02.html。 - user330315
2
9.1不再受支持和维护。 您现在应该计划升级到受支持的版本(例如10或9.6)。 - user330315
1个回答

3
每次连接发生时,Postgresql都会分叉它的主进程。这就是为什么你可以得到很多postgresql进程的原因。
现在,根据正在运行的查询,它可以使用大量的CPU和/或内存。
我猜你的应用程序也在使用池,这意味着当用户完成他的过程时,连接返回到池中,postgresql进程将无所作为,直到池杀死连接或连接被另一个用户重用。
如果你启用一些日志(连接日志、查询日志,如果响应时间>某个值,则使用临时文件、锁定等),你可以稍后运行像pgbadger(example here)这样的报告,以检查是否存在查询太慢或使用太多内存(最糟糕的情况:临时文件)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接