postgresql - Postgres 100% CPU。高写/读操作计数率

标签 postgresql

我在使用数据库(托管在 Amazon RDS 上)时遇到了一些问题,有时会发生 100% 的 CPU 消耗并且所有选择查询都变慢了。图表上还有一个奇怪的细节:每秒写入操作数远大于每秒读取操作数,但 pg_stat_activity 仅返回 select 查询,没有 create更新删除 (CUD) 查询。

问题是:每秒写入操作数高的原因是什么?此指标是否包括对 CUD 查询的索引(重建)操作?为什么我在 pg_stat_activity 结果中看不到 CUD 查询?

enter image description here

最佳答案

这两个指标(高 CPU、写入次数远多于读取次数)可能无关(两个图表之间似乎没有任何相关性)。

高 CPU 使用率可能是由复杂的选择查询引起的,尤其是在存在大量内存中排序或过滤的情况下。如果没有请求的详细信息,就很难说出正在发生的事情。

写入多于读取可能只是意味着数据集被有效缓存,因此不需要从磁盘读取任何数据。

请注意,pg_stat_activity 只会为您提供事件的快照。可能存在太短的写入请求,以至于无法在快照中看到。此外,某些 SELECT 查询实际上可能会导致写入(典型示例是调用 nextval)。也可能有正在写入磁盘的日志!

关于postgresql - Postgres 100% CPU。高写/读操作计数率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35601477/

相关文章:

php - pg_connect 使我的 php 脚本崩溃

postgresql - Postgres 9.3 - 新功能上的新角色的模式错误权限被拒绝

java - 使用 Java 在 Postgresql 中存储和检索图像

mysql - 将 Sonarqube 6.5 升级到 7.1,并从旧服务器和数据库迁移

postgresql - Postgres 数据库转储大小大于物理大小

PHP - bindValue() 的 PDO 问题

SQL Join Table for Single Table to Self

postgresql - POSTGRES : Disk bound IO - possible to keep table in memory?

postgresql - 将 DB2 触发器重写为 PostgreSQL 触发器

mysql pivot 到 postgres 数据透视表