首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理postgresql数据库的高负载

管理postgresql数据库的高负载
EN

Server Fault用户
提问于 2010-02-28 23:27:54
回答 3查看 13K关注 0票数 4

我似乎遇到了一个问题,即运行postgresql的服务器正在经历相当高的负载,平均负载超过30。

此服务器在vmware上作为vm运行。

我想知道的是,配置postgresql的最佳方式是什么,这样它就不会重载该框。

如果我要在VM上投入更多的资源,这会解决这个问题吗?或者它也会吞噬掉这个问题。只有CPU才会受到冲击,内存(2GB)就足够了。

EN

回答 3

Server Fault用户

回答已采纳

发布于 2010-03-01 00:14:30

检查您的表是否已被正确地吸尘。postgres实例上CPU使用率高通常是表中有大量已删除行的标志。

如果您使用的是自动真空,请检查表统计信息以检查它是否实际运行。

票数 1
EN

Server Fault用户

发布于 2010-03-01 09:01:53

“高负载”( parallel )可能是我和许多并行运行的查询。尝试运行以下查询:

代码语言:javascript
复制
SELECT * FROM pg_stat_activity;

这将显示服务器目前正在做什么。也许你能在这里看到可疑的东西?一个不应该经常调用的查询?

此外,对于调试性能问题,在log_min_duration_statement中设置postgresql.conf选项非常有用。这将显示需要大量时间执行的查询。这些可能是造成最大负荷的因素。通常需要优化单个错误查询(通过重写查询、添加索引或优化PostgreSQL配置)来大大降低服务器负载。

票数 4
EN

Server Fault用户

发布于 2010-03-01 07:59:18

我不能给您一个配置文件,因为大多数设置取决于您的环境,而“高负载”并不完全是一个单一类型的问题。但是,这里有一些关于如何跟踪PGSQL性能问题的提示。

首先,你必须检查你的数据库到底在做什么。通常,当您逃离DB时,会有一些频繁运行的大量查询。检查您运行的查询,然后使用EXPLAIN分析来了解每个查询的成本。

接下来,您开始检查到底是什么问题。写得不好的查询可能会破坏性能,但是如果查询看起来很好(而且不能进行优化),您必须看看是否可以以其他方式使DB变得更容易。

检查您的解释输出的顺序扫描,特别是如果您是在更大的表和几个步骤。检查是否可以引入有助于查询的索引。解释是用于查询的通用性能跟踪工具。

别忘了抽空分析你的数据库。许多发行版都禁用了autovacum服务,然后您必须手动执行vacum/analyse。它们也可能使会计失效,这使得分析过程的效率大大降低。完成此操作后,返回并再次解释查询是否以不同方式运行。

如果没有其他的帮助,您将不得不重建数据库结构或开始分发数据库结构,但我的经验是,除非您运行一个数据库负载非常重或同时使用数千个用户的站点,否则您不需要这样做。数据库通常无法以最佳方式检索查询。

最后,请查看http://wiki.postgresql.org/wiki/Performance_优化以获得更多提示。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/117708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档