我在使用数据库(托管在 Amazon RDS 上)时遇到了一些问题,有时会发生 100% 的 CPU 消耗并且所有选择查询都变慢了。图表上还有一个奇怪的细节:每秒写入操作数远大于每秒读取操作数,但 pg_stat_activity
仅返回 select
查询,没有 create
、更新
或删除
(CUD
) 查询。
问题是:每秒写入操作数高的原因是什么?此指标是否包括对 CUD
查询的索引(重建)操作?为什么我在 pg_stat_activity
结果中看不到 CUD
查询?
最佳答案
这两个指标(高 CPU、写入次数远多于读取次数)可能无关(两个图表之间似乎没有任何相关性)。
高 CPU 使用率可能是由复杂的选择查询引起的,尤其是在存在大量内存中排序或过滤的情况下。如果没有请求的详细信息,就很难说出正在发生的事情。
写入多于读取可能只是意味着数据集被有效缓存,因此不需要从磁盘读取任何数据。
请注意,pg_stat_activity
只会为您提供事件的快照。可能存在太短的写入请求,以至于无法在快照中看到。此外,某些 SELECT
查询实际上可能会导致写入(典型示例是调用 nextval
)。也可能有正在写入磁盘的日志!
关于postgresql - Postgres 100% CPU。高写/读操作计数率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35601477/