我最近将我的 Postgres 数据库从 Windows 迁移到 CentOS 6.7。 在 Windows 上,数据库从不使用太多 CPU,但在 Linux 上,我看到它使用恒定的 ~30% CPU(使用 top)。 (机上4核)
任何人都知道这是否正常,或者为什么会这样做? 该应用程序似乎运行良好,并且与 Windows 一样快或更快。
注意,这是一个大数据库,100gb+数据,1000+数据库。
我尝试使用Pgadmin监控服务器状态,但是服务器状态挂起,无法运行,报错“log_filename parameter must be equal”
最佳答案
对于 1000 个数据库,我预计 vacuum worker 和统计收集器会花费大量时间来检查需要维护的内容。
我建议你做两件事
- 提高
autovacuum_naptime
参数以减少检查频率 - 将
stats_temp_directory
放在 ramdisk 上
您可能还设置了一个较高的 max_connections
限制,以允许您的客户端使用那些大量的数据库,这是另一个可能的 CPU 负载来源,因为大量的“槽”是每次后端必须与其他后端同步时检查。
关于windows - Postgres 恒定 30% CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33346326/