我似乎遇到了一个问题,即运行postgresql的服务器正在经历相当高的负载,平均负载超过30。
此服务器在vmware上作为vm运行。
我想知道的是,配置postgresql的最佳方式是什么,这样它就不会重载该框。
如果我要在VM上投入更多的资源,这会解决这个问题吗?或者它也会吞噬掉这个问题。只有CPU才会受到冲击,内存(2GB)就足够了。
发布于 2010-03-01 00:14:30
检查您的表是否已被正确地吸尘。postgres实例上CPU使用率高通常是表中有大量已删除行的标志。
如果您使用的是自动真空,请检查表统计信息以检查它是否实际运行。
发布于 2010-03-01 09:01:53
“高负载”( parallel )可能是我和许多并行运行的查询。尝试运行以下查询:
SELECT * FROM pg_stat_activity;这将显示服务器目前正在做什么。也许你能在这里看到可疑的东西?一个不应该经常调用的查询?
此外,对于调试性能问题,在log_min_duration_statement中设置postgresql.conf选项非常有用。这将显示需要大量时间执行的查询。这些可能是造成最大负荷的因素。通常需要优化单个错误查询(通过重写查询、添加索引或优化PostgreSQL配置)来大大降低服务器负载。
发布于 2010-03-01 07:59:18
我不能给您一个配置文件,因为大多数设置取决于您的环境,而“高负载”并不完全是一个单一类型的问题。但是,这里有一些关于如何跟踪PGSQL性能问题的提示。
首先,你必须检查你的数据库到底在做什么。通常,当您逃离DB时,会有一些频繁运行的大量查询。检查您运行的查询,然后使用EXPLAIN分析来了解每个查询的成本。
接下来,您开始检查到底是什么问题。写得不好的查询可能会破坏性能,但是如果查询看起来很好(而且不能进行优化),您必须看看是否可以以其他方式使DB变得更容易。
检查您的解释输出的顺序扫描,特别是如果您是在更大的表和几个步骤。检查是否可以引入有助于查询的索引。解释是用于查询的通用性能跟踪工具。
别忘了抽空分析你的数据库。许多发行版都禁用了autovacum服务,然后您必须手动执行vacum/analyse。它们也可能使会计失效,这使得分析过程的效率大大降低。完成此操作后,返回并再次解释查询是否以不同方式运行。
如果没有其他的帮助,您将不得不重建数据库结构或开始分发数据库结构,但我的经验是,除非您运行一个数据库负载非常重或同时使用数千个用户的站点,否则您不需要这样做。数据库通常无法以最佳方式检索查询。
最后,请查看http://wiki.postgresql.org/wiki/Performance_优化以获得更多提示。
https://serverfault.com/questions/117708
复制相似问题