【巡检问题分析与最佳实践】RDS PostgreSQL CPU高问题

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS SQL Server,基础系列 2核4GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 当RDS PostgreSQL实例的CPU使用率持续较高时,很容易导致数据库访问卡慢的情况,例如一些很简单的查询请求的响应时间也会很久甚至超时失败。

往期分享

RDS MySQL 小版本升级最佳实践

RDS MySQL 实例空间问题

RDS MySQL 内存使用问题

RDS MySQL 活跃线程数高问题

RDS MySQL 慢SQL问题

RDS MySQL 实例IO高问题

概述

CPU使用率过高问题是RDS PG用户遇到的性能问题中较常见的一类。当RDS SQL Server实例的CPU使用率持续较高时,很容易导致数据库访问卡慢的情况,例如一些很简单的查询请求的响应时间也会很久甚至超时失败。

资源监控

在RDS控制台的“监控与报警”页中的“标准监控”->“资源监控”下,可以查看指定时间段内实例的CPU使用率信息。

1.png

对于RDS PG来说,CPU使用率持续大于80%以上,通常表明系统处于高负载的情况,并且很可能存在较严重的性能问题。

CPU基本概念

  • CPU使用率,CPU使用率指的是CPU执行工作时间的比例,包含了所有符合条件的活动的时钟周期,比如停滞等待IO而导致较高的使用率,CPU使用率又被分为内核时间和用户时间。
  • 用户时间,执行用户态程序的时间被称为用户时间。
  • 内核时间,执行内核态代码的时间为内核时间,包含系统调用,内核线程和中断的时间。
  • 上下文切换,内核程序切换CPU让其在不同的地址空间上操作
  • 中断,由物理设备发送给内核的信号,通常是请求I/O服务

CPU高的常见原因

扫描行高

查看资源监控可以看出CPU使用率很高。

2.png

查看引擎监控操作行数

0.png

发现存在大量的全表扫描行,这个是导致CPU高的主要问题,对于一个查询来说,如果该查询返回10行数据,我们需要尽量保证SQL通过索引扫描10行数据返回,此时效率是最高的,而不是全表扫描100W行数据后过滤掉99%的数据,返回10行给客户端。评价一个查询是否扫描行很高就可以通过该查询的返回行和扫描行相比可以知道,如果扫描行远大于返回行说明该SQL可以通过创建合适索引可以极大程度的降低SQL的响应时间以及降低CPU资源的使用率。

通过das的性能洞察可以找出问题SQL

3.png

找到慢SQL后,可以参考RDS PG慢SQL问题,进行SQL的优化。

活跃会话高

查看资源监控

4.png

发现CPU使用率较高,此时系统态占用达到了23%,说明可能存在大量的系统调用或者中断导致系统态CPU使用率较高。

查看下引擎监控的操作行数

5.png

发现此时全表扫描行数并不高。

查看下引擎监控的连接情况

6.png

发现此时活跃会话数已达到279个,此实例规格为2C4G,因为CPU只有两个core,同时却有279个会话同时运行,此时CPU会频繁的进行上下文切换,导致CPU的系统态占用增加,降低了CPU实际去执行SQL的时间。此时说明数据库资源已远超目前能提供服务的负载。一般合理的活跃会话数量是当前实例规格CPU数量的2-3倍,例如实例规格为2C4G,性能最高的情况为活跃会话数不超过4-6个,此时CPU使用效率最高,绝大多数CPU资源都用于执行SQL,而不是进行上下文切换或者中断等。

查看DAS中的会话管理,查看当前活跃状态的SQL以及数量。

7.png

查看DAS中的性能洞察查看当前具体的SQL分布,以及SQL的等待事件

8.png

对于这类情况,需要考虑进行规格的升级,或者降低并发降低活跃会话的数量,保存活跃会话在一个合理的范围内。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
NoSQL 关系型数据库 MySQL
阿里云RDS关系型数据库大全_MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等
阿里云RDS关系型数据库如MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB
332 0
|
2月前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
422 2
|
3月前
|
SQL 数据可视化 关系型数据库
MySQL 备份可视化巡检系统
MySQL 备份可视化巡检系统
|
3月前
|
缓存 关系型数据库 MySQL
分享一个实用的MySQL一键巡检脚本
分享一个实用的MySQL一键巡检脚本
58 0
|
关系型数据库 定位技术 分布式数据库
沉浸式学习PostgreSQL|PolarDB 18: 通过GIS轨迹相似伴随|时态分析|轨迹驻点识别等技术对拐卖、诱骗场景进行侦查
本文主要教大家怎么用好数据库, 而不是怎么运维管理数据库、怎么开发数据库内核.
1310 1
|
6月前
|
存储 关系型数据库 MySQL
TiDB与MySQL、PostgreSQL等数据库的比较分析
【2月更文挑战第25天】本文将对TiDB、MySQL和PostgreSQL等数据库进行详细的比较分析,探讨它们各自的优势和劣势。TiDB作为一款分布式关系型数据库,在扩展性、并发性能等方面表现突出;MySQL以其易用性和成熟性受到广泛应用;PostgreSQL则在数据完整性、扩展性等方面具有优势。通过对比这些数据库的特点和适用场景,帮助企业更好地选择适合自己业务需求的数据库系统。
1104 4
|
6月前
|
SQL 关系型数据库 MySQL
PostgreSQL【异常 01】java.io.IOException:Tried to send an out-of-range integer as a 2-byte value 分析+解决
PostgreSQL【异常 01】java.io.IOException:Tried to send an out-of-range integer as a 2-byte value 分析+解决
444 1
|
6月前
|
安全 关系型数据库 数据库
上新|阿里云RDS PostgreSQL支持PG 16版本,AliPG提供丰富自研能力
AliPG在社区版16.0的基础上,在安全、成本、可运维性等多个方面做了提升,丰富的内核/插件特性支持,满足业务场景的需求
|
6月前
|
NoSQL Java 关系型数据库
处理Redis与MySQL数据不一致的Java定期巡检方案
处理Redis与MySQL数据不一致的Java定期巡检方案
62 0
|
安全 关系型数据库 数据库
《确保安全:PostgreSQL安全配置与最佳实践》
《确保安全:PostgreSQL安全配置与最佳实践》
661 0

相关产品

  • 云数据库 RDS
  • 云数据库 RDS PostgreSQL 版
  • 云数据库 RDS MySQL 版
  • 下一篇
    无影云桌面