运维笔记--postgresql占用CPU问题定位
运维笔记--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问题定位相关推荐
- Nginx基础应用配置小结 - 运维笔记
Nginx基础应用配置小结 - 运维笔记 在linux系统下使用nginx作为web应用服务,用来提升网站访问速度的经验已五年多了,今天在此对nginx的使用做一简单总结. 一.nginx服务简介 N ...
- H5直播站点运维笔记一 服务器篇
H5直播站点运维笔记一 服务器 服务器篇 一.CentOS6基础操作 1. 查看服务器版本 2. 查看服务器性能 3. 文件查找 4. 软件查找 5. 用户系统 6. 远程登录工具 二.FTP ( V ...
- 运维笔记-nginx详解
目录 1.简介 2.正向代理与反向代理 3.nginx的安装部署(基于Centos-stream操作系统) 4.nginx配置文件详解 5.高效的Web服务器-nginx 5.1nginx服务器基本配 ...
- linux运维笔记:动态网页资源
linux运维笔记:动态网页资源 1.动态网页资源介绍 所谓的动态网页是与静态网页相对而言,也就是说,动态网页的URL后缀 不是.htm..html..shtml..xml..js..css等静态网页 ...
- H5直播站点运维笔记四 压测篇
H5直播站点运维笔记四 压测篇 压测篇 一.测试环境 1.CPU 2.内存 3.操作系统 4.WEB环境 二.优化前压测 三.开启opcache优化 四.laravel 缓存配置/路由/类映射加载优化 ...
- linux云计算架构师运维笔记-第1天-硬件知识介绍与操作系统部署
linux云计算架构师运维笔记-第1天-硬件知识课程说明 1. 课程知识详细讲解 1.1 服务器硬件知识介绍 1.1.1 硬件设备种类介绍部分 1.1.2 企业服务器运行指标: 1.1.3 服务器种类 ...
- 老男孩的运维笔记文档-高级部分(系统架构师)列表(三)
############################################################ # # USER YYYY-MM-DD – ACTION # ...
- [运维笔记] PowerShell (模块).模块的查找、安装、卸载、更新、保存、发布
[运维笔记] PowerShell (库/模块).库的查找.安装.卸载.更新.保存.发布 作者主页:jcLee95:https://blog.csdn.net/qq_28550263?spm=3001 ...
- [运维笔记] PowerShell (模块).模块清单
[运维笔记] PowerShell (模块).模块清单 作者:jcLee95 目 录 1. 模块清单是什么 2. 如何创建模块清单 3. 模块清单.psd1文件内容解释 4. 某库的模块清单实例 1. ...
最新文章
- hashlib模式和hmac模式
- php insert failed,较大的MySQL INSERT语句导致PHP错误
- 内含福利 | 世界人工智能大会:对话大咖,深挖机器学习的商业应用
- mysql之索引组织表
- SET-UID程序漏洞实验
- python多线程之threading
- Python分布式+云计算
- HTML基础_Day02
- promise简单封装ajax 完美嵌套多个ajax请求
- 【LeetCode - 227】基本计算器 II(栈)
- MySQL进阶之索引
- 算法笔记_100:蓝桥杯练习 算法提高 三个整数的排序(Java)
- 求10 个整数中最大值
- 如何使用jMeter对某个OData服务进行高并发性能测试
- 20191119每日一句
- 华人科学家量子计算机,华人科学家张首晟辞世 有望获得诺贝尔奖却成遗憾
- html 项目实战摄影开课吧,最新《开课吧Web全栈架构师正式课》(Vue.JS及实战项目)...
- Spring源码学习(三)-- 底层架构核心概念解析
- 分享134个ASP源码,总有一款适合您
- 集成底座项目典型数据下发方式对比说明
热门文章
- java多线程提高性能写法
- SqlServer操作远程数据库
- Android 浅谈动画
- php小偷程序原理分析2
- ifs 报表开发手册_房地产开发资质要求《暂定资质证书》相关规定
- Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信)
- PAT 乙级 1041 考试座位号
- Spring MVC modelandview
- 数据库迁移——自动迁移Enable-Migrations
- Android开发之第三方推送JPush极光推送知识点详解 学会集成第三方SDK推送