当主机有大量可用内存时,调整最有影响力的Postgres设置

时间:2015-05-19 14:42:29

标签: database postgresql rdbms postgresql-9.3 postgresql-performance

我的雇主在一个体面的“大型”虚拟机上运行Postgres。它目前配置有24个内核和128 GB物理RAM。

我们的监控解决方案表明,即使在负载最重的时段,Postgres进程也不会消耗超过大约11 GB的RAM。据推测,操作系统使用所有剩余的空闲RAM来缓存文件系统。

我的问题:如果调整了哪些配置设置,最有可能提供性能提升,因为工作负载是事务性和分析性的混合?

换句话说,鉴于有大量的免费内存,我可能会在哪些环境中获得最大的“爆炸性”?

编辑添加:

以下是调谐指南中经常提到的某些设置的当前值。注意:我没有设置这些值;我只是在阅读conf文件中的内容:

shared_buffers = 32GB
work_mem = 144MB
effective_cache_size = 120GB

“sort_mem”和“max_fsm_pages”未在文件中的任何位置设置。

Postgres版本是9.3.5。

1 个答案:

答案 0 :(得分:0)

控制Postgres内存使用量的设置为shared_buffersrecommended设置为RAM的25%,最大为8GB。

由于11GB接近8GB,看起来您的系统调整得很好。您可以使用effective_cache_size告诉Postgres您的服务器有大量内存用于操作系统磁盘缓存。

启动Postgres性能调整的两个好地方:

  • 启用SQL query loggingexplain analyze慢速或频繁查询
  • 使用pg_activity(" top" for Postgres)查看让您的服务器忙碌的原因