我的雇主在一个体面的"大型"虚拟机上运行Postgres。它目前配置了24核和128 GB物理RAM。
我们的监控方案表明,即使在最大负载期间,Postgres进程也不会消耗超过11 GB的RAM。假设所有剩余的空闲RAM都被操作系统用来缓存文件系统。
我的问题是:什么样的配置设置,如果进行调整,最有可能提供一个混合事务性和分析性工作负载的性能提升?
换句话说,考虑到有大量的空闲内存,我在哪里可以获得最"物有所值"的设置?
编辑添加:
以下是调优指南中经常提到的一些设置的当前值。注意:我没有设置这些值;我正在阅读conf文件中的内容:
shared_buffers = 32GB
work_mem = 144MB
effective_cache_size = 120GB
"sort_mem"one_answers"max_fsm_pages"没有在文件的任何地方设置。
Postgres版本是9.3.5
控制Postgres内存使用的设置是shared_buffers
。建议设置为25%的RAM,最大8GB。
由于11GB接近8GB,看来您的系统调优得很好。你可以使用effective_cache_size
来告诉Postgres你有一个服务器,有大量的内存用于操作系统磁盘缓存。
开始Postgres性能调优的两个好地方:
- 打开SQL查询日志和
explain analyze
慢速或频繁查询 - 使用
pg_activity
(Postgres的"顶部")来查看是什么使您的服务器繁忙