Postgresql CPU相关性能问题分析(2)

本文将继续Postgresql CPU性能问题进行展开。Postgresql的出现cpu问题,一般是CPU使用率较高,好比逼近100%。针对这种状况,你们能够优先考虑去查找数据库的链接数,方法以下,能够查找到有哪些活跃的SQL进程。web

select * from pg_stat_activity where state = 'active';


若是想当即解决到这些问题,那么能够选择将这些进程杀掉便可。方法以下:sql

1>先找出相关的SQL [pid]数值,以下图:数据库

Screen Shot 2020-09-28 at 18.23.58.png

2>运行SQL语句:app

SELECT pg_cancel_backend([括号中输入上一步查找的pid数值])


      以上是治标不治本的操做过程,那么如何避免这种状况再次发生呢?那么就要追踪当时数据库在发生问题的时候,环境中发生了什么?好比是否是在进行什么维护,好比定时任务等?跑什么脚本?这种问题第一次出现的时间节点是什么?那么就须要在那个时间节点附近进行分析,注意是附近。分析系统作了什么?能够经过系统日志(app log, web log, postgresql.log,甚至是环境部署的log)查看,是否是有什么消息。也能够经过以前的SQL进程的细节去反推系统在作什么操做,这也是比较靠谱的一种方法。重点分析SQL执行中有没有脏读,有没有死锁等状况发生。若是有那么就要引发重视了;其次能够评估,从业务的角度去查看是否是能够优化逻辑,进而减小对CPU资源的依赖。好比分析相关SQL执行计划等,关于SQL执行计划的简单使用方法,你们能够参考文章:http://www.javashuo.com/article/p-mrwuqzze-nc.htmlide


      其次是在分析解决CPU问题的时候,如上篇文章所说,不用总盯着CPU,CPU的使用繁忙,不少时候也是因为其余资源受限或者异常致使的,好比内存耗尽,磁盘用完等有些极端的状况。post


      那么是在进程中发现了不少系统行为,好比auto analyze/auto vaccume等,那么就须要去分析postgresql系统层面的一些问题,能够相应地参考我关于postgresql的其余文章。性能


     若是你们在实际的工做中遇到了性能相关的问题,均可以私信或者留言,很是高兴能与你们一块儿交流。测试


     你们也能够扫描并关注以下公众号“TimTest”,会有更多性能测试相关内容分享。优化


 qrcode_for_gh_39009e949117_258-1.jpg

相关文章
相关标签/搜索