运维笔记--postgresql占用CPU问题定位

场景描述:

业务系统访问变慢,登陆服务器查看系统负载并不高,然后查看占用CPU较高的进程,发现是连接数据库的几个进程占用系统资源较多。

处理方式:

查找出占用系统内存&CPU排名前10的进程:[或者用top命令查看]  ---这里需要注意,如果用了容器,需要进入容器内部查看相应的进程。

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

切换到postgres用户,执行psql,进入数据库终端:指定上述命令找到的系统进程号

SELECT procpid, START, now() - START AS lap, current_query  FROM ( SELECT backendid, pg_stat_get_backend_pid (S.backendid) AS procpid,pg_stat_get_backend_activity_start (S.backendid) AS START,pg_stat_get_backend_activity (S.backendid) AS current_query
FROM (SELECT pg_stat_get_backend_idset () AS backendid) AS S) AS S WHERE current_query <> '<IDLE>' and procpid=15874
ORDER BY lap DESC;

定位到SQL,确认该SQL完成的业务查询功能,查看执行计划,增加索引or 修改代码。

SELECT "******_edoc_queue".id FROM "******_edoc_queue" WHERE (("*******_edoc_queue"."edoc_id" = '521300000004TCS60515001FV-960157.pdf')  AND  ("*****_edoc_queue"."active" = true)) ORDER BY "*****_edoc_queue"."id"

查询该条SQL的执行计划:(Postgresql使用explain analyze + sql语法的格式)

postgres=# \c ***你的实际模式schema
You are now connected to database "stbg" as user "postgres".
stbg=# explain analyze SELECT "cus_center_new_edoc_queue".id FROM "cus_center_new_edoc_queue" WHERE (("cus_center_new_edoc_queue"."edoc_id" = '521300000008TCS60417066FV-960101.pdf')  AND  ("cus_center_new_edoc_queue"."active" = true)) ORDER BY "cus_center_new_edoc_queue"."id";---得到如下执行计划:
stbg= BY "cus_center_new_edoc_queue"."id";ter_new_edoc_queue"."active" = true)) ORDER QUERY PLAN         -----------------------------------------------------------------------------
Sort  (cost=21044.85..21044.85 rows=1 width=4) (actual time=109.905..109.905 ro
ws=0 loops=1)Sort Key: idSort Method: quicksort  Memory: 25kB->  Seq Scan on cus_center_new_edoc_queue  (cost=0.00..21044.84 rows=1 width=4) (actual time=109.880..109.880 rows=0 loops=1)Filter: (active AND ((edoc_id)::text = '521300000008TCS60417066FV-960101.pdf'::text))Rows Removed by Filter: 583348Planning time: 0.468 msExecution time: 109.952 ms
(8 rows)----可以看出执行查询时间:109.952 ms

转载于:https://www.cnblogs.com/hellojesson/p/10911034.html

运维笔记--postgresql占用CPU问题定位相关推荐

  1. Nginx基础应用配置小结 - 运维笔记

    Nginx基础应用配置小结 - 运维笔记 在linux系统下使用nginx作为web应用服务,用来提升网站访问速度的经验已五年多了,今天在此对nginx的使用做一简单总结. 一.nginx服务简介 N ...

  2. H5直播站点运维笔记一 服务器篇

    H5直播站点运维笔记一 服务器 服务器篇 一.CentOS6基础操作 1. 查看服务器版本 2. 查看服务器性能 3. 文件查找 4. 软件查找 5. 用户系统 6. 远程登录工具 二.FTP ( V ...

  3. 运维笔记-nginx详解

    目录 1.简介 2.正向代理与反向代理 3.nginx的安装部署(基于Centos-stream操作系统) 4.nginx配置文件详解 5.高效的Web服务器-nginx 5.1nginx服务器基本配 ...

  4. linux运维笔记:动态网页资源

    linux运维笔记:动态网页资源 1.动态网页资源介绍 所谓的动态网页是与静态网页相对而言,也就是说,动态网页的URL后缀 不是.htm..html..shtml..xml..js..css等静态网页 ...

  5. H5直播站点运维笔记四 压测篇

    H5直播站点运维笔记四 压测篇 压测篇 一.测试环境 1.CPU 2.内存 3.操作系统 4.WEB环境 二.优化前压测 三.开启opcache优化 四.laravel 缓存配置/路由/类映射加载优化 ...

  6. linux云计算架构师运维笔记-第1天-硬件知识介绍与操作系统部署

    linux云计算架构师运维笔记-第1天-硬件知识课程说明 1. 课程知识详细讲解 1.1 服务器硬件知识介绍 1.1.1 硬件设备种类介绍部分 1.1.2 企业服务器运行指标: 1.1.3 服务器种类 ...

  7. 老男孩的运维笔记文档-高级部分(系统架构师)列表(三)

    ############################################################ # # USER          YYYY-MM-DD – ACTION # ...

  8. [运维笔记] PowerShell (模块).模块的查找、安装、卸载、更新、保存、发布

    [运维笔记] PowerShell (库/模块).库的查找.安装.卸载.更新.保存.发布 作者主页:jcLee95:https://blog.csdn.net/qq_28550263?spm=3001 ...

  9. [运维笔记] PowerShell (模块).模块清单

    [运维笔记] PowerShell (模块).模块清单 作者:jcLee95 目 录 1. 模块清单是什么 2. 如何创建模块清单 3. 模块清单.psd1文件内容解释 4. 某库的模块清单实例 1. ...

最新文章

  1. hashlib模式和hmac模式
  2. php insert failed,较大的MySQL INSERT语句导致PHP错误
  3. 内含福利 | 世界人工智能大会:对话大咖,深挖机器学习的商业应用
  4. mysql之索引组织表
  5. SET-UID程序漏洞实验
  6. python多线程之threading
  7. Python分布式+云计算
  8. HTML基础_Day02
  9. promise简单封装ajax 完美嵌套多个ajax请求
  10. 【LeetCode - 227】基本计算器 II(栈)
  11. MySQL进阶之索引
  12. 算法笔记_100:蓝桥杯练习 算法提高 三个整数的排序(Java)
  13. 求10 个整数中最大值
  14. 如何使用jMeter对某个OData服务进行高并发性能测试
  15. 20191119每日一句
  16. 华人科学家量子计算机,华人科学家张首晟辞世 有望获得诺贝尔奖却成遗憾
  17. html 项目实战摄影开课吧,最新《开课吧Web全栈架构师正式课》(Vue.JS及实战项目)...
  18. Spring源码学习(三)-- 底层架构核心概念解析
  19. 分享134个ASP源码,总有一款适合您
  20. 集成底座项目典型数据下发方式对比说明

热门文章

  1. java多线程提高性能写法
  2. SqlServer操作远程数据库
  3. Android 浅谈动画
  4. php小偷程序原理分析2
  5. ifs 报表开发手册_房地产开发资质要求《暂定资质证书》相关规定
  6. Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信)
  7. PAT 乙级 1041 考试座位号
  8. Spring MVC modelandview
  9. 数据库迁移——自动迁移Enable-Migrations
  10. Android开发之第三方推送JPush极光推送知识点详解 学会集成第三方SDK推送