PG数据库服务器的CPU使用率突然升高该如何分析

​现在基于PG或者脱胎于PG的国产数据库越来越多,再加上PG社区版用户也在快速增长,因此多学点PG的知识对于DBA今后的转型来说,还是挺有用的,因此这几天我们多讨论一些PG相关的问题。昨天我们讨论了PG IO优化方面的问题,今天我们就来讨论一个核CPU有关的问题。今天的议题是,如果PG数据库服务器的CPU使用率突然升高,我们应该从哪几个方面去分析。

如果遇到数据库服务器CPU使用率突然大幅增高或者过高的问题,不论是哪种数据库,我们都要首先查看一下操作系统上有没有非数据库的进程使用了过高的CPU资源,这个使用TOP工具就可以实现了,不要因为SWAP、大规模CACHE DROP等操作引发的CPU使用率突增让数据库来背锅了,搞的你分析了一大圈,发现完全和数据库无关。几年前我遇到过一个案例,一个用户让我帮助分析他们的CPU怎么突然100%了,我也是没注意这些问题,直接在数据库里找问题,最后分析了一大圈,发现负载啥的都和前一天没啥区别,就是CPU使用率多了30%。后来实在没招了,用TOP看了一下,发现了一个异常的进程,居然在做科学计算,这个进程正好消耗了30%多的CPU资源。最后客户那边确认了一下,十分不好意思的说,是一个几年前设置的一个crontab任务忘了关闭了,才导致了今天的问题。几年前,他们搞数据库合库,只要CPU使用率在一个月中没有一天业务高峰期超过35%的数据库,就必须合并到其他数据库中,从而节约资源。他们干了几套系统后觉得太辛苦了,部门领导就想了个招,在月底业务高峰期的时候,让一个科学计算的任务跑上几个小时,让符合合并的数据库变少一点,大家也少干点活。没想到这台服务器上的任务忘了关了,而这些年这套系统的数据量越来越大,负载也越来越高了,没想到这个月底业务很忙,居然把CPU跑爆掉了。

另外如果在一台物理机上跑多个数据库实例,我们就不能只看一个数据库的情况了,而是要看多个数据库的总体负载。

除此之外,如果排除了这些问题,单单来讨论PG数据库,如果真的是PG数据库引发了CPU突然增加,我们应该如何去分析呢?今天我简单的罗列了一些常用场景,遇到问题的时候,DBA可以一条条的进行排除。

首先,也是可能性最大的方面,出现大查询或者较高并发量的SQL执行计划变坏:如果数据库中的某个查询或某组查询的复杂度增加,则可能导致CPU使用率的增加;一条常见SQL的执行计划错误也会导致执行开销增加,虽然单条SQL的延时仍然在业务能够忍受的范围内,但是总体CPU消耗会大幅增大,如果CPU资源出现瓶颈,那么系统整体性能都会严重下降。

第二,出现严重的资源竞争:如果多个连接或会话同时请求大量的数据,则可能会产生资源竞争,甚至引发spinlock等自旋锁争用,从而导致CPU使用率的增加,分析这方面的原因通过PG的等待事件进行分析是比较有效的。

第三,索引缺失导致的SQL执行计划不够优化:如果数据库表缺少索引,则查询操作将需要扫描整个表,从而导致CPU使用率的增加。

第四,磁盘IO瓶颈:如果数据库的磁盘IO不能满足需求,则可能导致CPU使用率的增加。这一点可能会让朋友们感到诧异,IO瓶颈的时候,会话不都在等待IO吗?怎么会引发CPU的问题呢?PostgreSQL 使用同步阻塞 IO(Buffered IO),同步阻塞 IO 意味着在完成 IO 操作之前,PostgreSQL 会阻塞等待 IO 操作的完成。当数据库服务器需要读写磁盘数据时,它会阻塞其他操作,直到 IO 操作完成。在这种情况下,IO延时会比平时高很多,CPU使用率中的IOWAIT的比例也会比较高。

第五,数据库维护任务:如果数据库正在进行大型的维护任务(例如VACUUM,ANALYZE等),则可能导致CPU使用率的增加。

第六,缓冲污染:这种情况出现几率较低,而且出现后也很难被发现。当缓存中的数据大多数是很少使用的数据时,就会出现缓存污染,导致频繁的缓存未命中,导致 CPU 利用率增加。当缓存污染发生时,CPU 会花更多的时间从存储中读取数据,而花更少的时间从缓存中执行指令。 这会导致整体系统性能下降和 CPU 使用率增加。对于PG这种shared_buffers配置占OS比例较低,采用DOUBLE BUFFER机制的数据库系统,出现缓冲污染的几率远大于Oracle等数据库。缓冲污染一旦产生,在SQL执行计划不发生变化的情况下,也会产生较为严重的性能下降,因此需要避免。对于经常出现类似问题的数据库,可以通过使用各种预热插件来不断预热热数据,从而防止缓冲污染。

第七,某张经常全表扫码的小表因为膨胀而突然变大:这种情况出现概率较低,不过也比较容易出现,如果某张表关闭了VACUUM并且常有UPDATE操作,那么经过一段时间积累,可能引发性能问题。

导致CPU使用率突然增高的可能性还有很多,不过对于PG数据库来说,大部分此类问题都是大并发SQL或者SQL执行计划变坏引发,加强SQL问题的监控一般来说能解决大多数PG的CPU问题。今天时间有限,仅仅讨论了一下常见的故障场景。不断积累这方面的知识库是企业和DBA应该做的事情,如果能够通过社区共同积累此类问题,那就会事半功倍。也希望大家有兴趣加入我们的DBAIOPS社区,共同来做这项工作。这项工作的成果会发布在D-SMART社区版中,我们也会定期通过文章汇报汇总的情况。​

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/309187.html<

(0)
运维的头像运维
上一篇2025-05-27 22:38
下一篇 2025-05-27 22:39

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注