我在使用DB(托管在Amazon RDS上)时遇到了一些问题,有时会发生100%的CPU消耗并且所有选择的查询都变得很慢。图表上还有一个奇怪的细节:每秒的写入操作比每秒的读取操作大得多,但pg_stat_activity
仅返回select
个查询,没有create
,update
或{ {1}}(delete
)查询。
问题是:每秒度量标准值的高写入操作的原因是什么?此度量标准是否包含CUD
个查询的索引(重建)操作?为什么我在CUD
结果中看不到CUD
个查询?
答案 0 :(得分:3)
两个指标(高CPU,写入次数比读取次数多)可能不相关(两个图表之间似乎没有相关性)。
复杂的选择查询可能导致CPU利用率过高,尤其是在存在大量内存中排序或过滤的情况下。如果没有请求的详细信息,很难说出正在发生的事情。
写入次数多于读取可能仅意味着数据集被有效缓存,因此不需要从磁盘读取任何数据。
请注意,pg_stat_activity
只会为您提供活动快照。可能存在写入请求太短而无法在快照中看到它们。此外,一些SELECT
查询实际上可能导致写入(典型示例是对nextval
的调用)。也可能有日志写入磁盘!