我们安装了Windows 2012,安装了PostgreSQL 9.1 32位,任务管理器显示了几个名为"PostgreSQL服务器(32位)“的”进程“,占用了大量的CPU (有时占用99%)。过了一段时间,这样的PostgreSQL进程在CPU使用率中显示为0%,占用了一些内存,但它们仍然保留在任务管理器中。
这到底是什么意思?
服务器运行一个网站(在IIS 8上),访问者主要连接获取(选择)数据。一些用户(3个管理用户)连接到DB来执行所有CRUD操作。
向你问好,豪尔赫·马尔多纳多
发布于 2018-07-25 17:11:41
每次发生连接时,Postgresql分叉他的主进程。这就是为什么您可以获得许多postgresql进程。
现在,根据在这些连接上运行的查询,它可以使用大量的CPU和/或内存。
我猜您也在应用程序中使用池,这意味着当用户完成他的进程时,连接返回到池,postgresql进程将什么也不做,直到池杀死连接或连接被另一个用户重用为止。
如果启用了一些日志(连接日志、查询日志(如果响应时间>一定数量)、临时文件使用情况、锁、.),则以后可以运行像pgbadger (这里的例子)这样的报告,以检查是否有查询太慢或使用太多内存(最糟糕的是:临时文件)
https://stackoverflow.com/questions/51524256
复制相似问题