3

将我们的 PostgreSQL 服务器升级到 9.4 版后,我们经历了显着的性能下降(随机查询约 4-5 倍)。以前我们运行版本 9.1 和 9.3。我将 9.4 版设置为与以前的版本作为集群并行运行。然后我做了 pg_dump 9.3 → pg_restore 9.4。这些服务器上的其他一切都保持不变。我什至使用了相同的 postgresql 配置(见下文)。


shared_buffers = 2400MB
temp_buffers = 12MB
work_mem = 4MB
maintenance_work_mem = 64MB
synchronous_commit = off
checkpoint_segments = 20
checkpoint_completion_target = 0.8
effective_cache_size = 8000MB
geqo_effort = 9
autovacuum_max_workers = 4
autovacuum_naptime = 45s
autovacuum_vacuum_scale_factor = 0.16
autovacuum_analyze_scale_factor = 0.08

服务器有 24Gb RAM。VmWare 主机不会超额订阅内存,也不会使用内存膨胀。我们的存储由 equalogic 提供支持,并且远未达到其带宽容量。服务器和 VmWare 主机上都没有进行交换。唯一的区别是现在数据库在 PostgreSQL 9.4 中运行。

所以我的问题是:

  • 有没有人升级到 9.4 后出现过类似的症状?
  • 我的配置有什么明显的问题吗?PG 9.3 也同样适用。
  • 9.4 中是否有与磁盘访问和使用模式、内存访问和使用模式相关的任何更改?
  • 内存映射文件会导致问题吗?
  • 它可以在操作系统上等待同步磁盘和内存,但操作系统不会立即执行吗?为什么这在 9.3 中没有发生?

环境:在 VmWare 下运行的 Ubuntu Linux 服务器 14.04。

“htop”中的进程看起来像在磁盘上什么都不做,但是只要其他进程同时访问磁盘,磁盘就会非常响应。

4

0 回答 0