postgresql 9.6中的CPU峰值较高

postgresql 9.6中的CPU峰值较高,postgresql,cpu,postgresql-9.6,Postgresql,Cpu,Postgresql 9.6,我们将postgresql从9.3升级到9.6,发现升级后postgresql占用了75%的CPU。 我们正在开发基于web的应用程序(JBOSS),它将与postgresql 9.6通信 我们有性能度量脚本,它将调用RESTAPI并运行1小时,并收集总体CPU利用率 使用以下配置,1小时后的CPU总利用率约为75% postgresql.conf: 最大工作进程数=16 每个聚集的最大平行工人数=8 强制并行模式=打开 共享缓冲区=3GB 维护工作内存=1GB 后端\u刷新\u后=1MB bg

我们将postgresql从9.3升级到9.6,发现升级后postgresql占用了75%的CPU。 我们正在开发基于web的应用程序(JBOSS),它将与postgresql 9.6通信 我们有性能度量脚本,它将调用RESTAPI并运行1小时,并收集总体CPU利用率

使用以下配置,1小时后的CPU总利用率约为75%

postgresql.conf:

最大工作进程数=16

每个聚集的最大平行工人数=8

强制并行模式=打开

共享缓冲区=3GB

维护工作内存=1GB

后端\u刷新\u后=1MB

bgwriter_flush_after=1MB

BGU延迟=10ms

最小容量=1GB

最大容量=2GB

同步提交=关闭

有效io并发=100

最大准备交易量=1000

硬件配置

CPU=8核

内存=16GB

postgresql数据目录驻留在NFS中。

这些性能峰值在postgresql 9.3中没有遇到(总体CPU消耗约为50%)


有人能帮忙吗?

升级后您是否对整个数据库进行了“分析”?您启用了并行查询支持-这可能会导致更多的CPU利用率。这还不错-查询使用了更多的CPU,但返回结果的速度更快。升级后我们运行了VACCUM。即使我禁用了force_parallel_mode=off,我的cpu仍然在75%以上。还有一件事,我只是在postgresql.conf中设置了maging_page=on,shared_buffer=300MB,系统中的maging页面数是166(sysctl vm.nr_hugepages)。通过此更改,我的CPU降低到45%到50%,但响应时间增加了。真空(回收旧行版本使用的空间)和分析(计算列统计)是两个独立的维护过程。你做过分析吗?我想升级时会丢失统计数据。我对整个数据库运行了分析,但没有帮助。升级后您是否对整个数据库进行了“分析”?您启用了并行查询支持-这可能会导致更多的CPU利用率。这还不错-查询使用了更多的CPU,但返回结果的速度更快。升级后我们运行了VACCUM。即使我禁用了force_parallel_mode=off,我的cpu仍然在75%以上。还有一件事,我只是在postgresql.conf中设置了maging_page=on,shared_buffer=300MB,系统中的maging页面数是166(sysctl vm.nr_hugepages)。通过此更改,我的CPU降低到45%到50%,但响应时间增加了。真空(回收旧行版本使用的空间)和分析(计算列统计)是两个独立的维护过程。你做过分析吗?我想升级时会丢失统计数据。我对整个数据库运行了分析,但没有帮助。