Geo*_*lva 3 postgresql performance tuning postgresql-9.1 performance-tuning
我们有一个使用 Python 2.7、Django、PostgreSQL 9.1 和 PostGIS 1.5 构建的系统。在这个系统中有一些广泛的验证过程,这些过程非常密集。
我们的机器:
SO:CentOS 6 硬件:8 核,32GB RAM,4Tb 硬盘;
我们,用于开发和测试,使用默认的 PostgreSQL 配置,我认为有些错误。我想利用我们的硬件提供的全部容量,到目前为止我们没有得到很多流量。当这个版本向公众发布时,将会有很多用户并发。
我们的应用程序有一些队列和异步策略来处理负载,但是,主要问题是:我如何安全地调优 PostgreSQL,运行一些测试,并确保调优在一定程度上有效?
默认的 Pg 配置几乎肯定是次优的,这是一个保守的默认值,用于“将在任何地方运行”而不是“将很快”。
还有很多要上说。看到http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server,http://wiki.postgresql.org/wiki/Performance_Optimization和格雷格·史密斯的“PostgreSQL的9.0高性能”。(免责声明,我现在在 2ndQuadrant 与 Greg 一起工作,但在我搬到 2ndQuadrant 之前,我推荐了他的书)。
我不会重复那些参考文献中已经涵盖的内容。
我建议您运行pg_test_fsync
以查看 fsync() 性能在您的 I/O 子系统上是否可接受,因为这对于适当的事务处理吞吐量至关重要。对于以读取为主的工作负载而言,这并不重要。如果它很差,请考虑购买几个带有适当内置电源故障保护的高质量 SSD 或带有电池供电写入缓存的 RAID 控制器。相比之下,我的单台廉价 SSD 笔记本电脑在 pg_test_fsync 中往往达到约 5000 ops/sec。
也用于sysbench
大致了解磁盘序列和随机吞吐量是什么样的。当您调整random_page_size
和时,这将很有用seq_page_size
。
最重要的是,使用像 PgBouncer 这样的连接池,而不是提高max_connections
几百个以上。
归档时间: |
|
查看次数: |
2728 次 |
最近记录: |