PG实例CPU使用率高排查思路

一、查看具体哪个会话占用高

top 查看哪个pid使用cpu高
psql 登录到数据库中查看具体的语句
SELECT pid, query FROM pg_stat_activity WHERE pid = ‘top查看到的pid’;

二、查看锁

在PostgreSQL中查看锁的状态,你可以使用pg_locks系统视图来获取当前数据库中的锁信息。以下是一些查询示例,可以帮助你查看和分析锁的情况:

  1. 查看所有当前锁

    SELECT * FROM pg_locks;
    

    这个查询将返回所有当前未解决的锁的信息。

  2. 根据锁类型查询

    • 查询所有表级锁:
      SELECT * FROM pg_locks WHERE locktype = 'relation';
      
    • 查询所有行级锁:
      SELECT * FROM pg_locks WHERE locktype = 'tuple';
      

    这些查询将分别返回表级锁和行级锁的详细信息。

  3. 查询特定数据库的锁

    SELECT * FROM pg_locks WHERE database = (SELECT oid FROM pg_database WHERE datname = 'your_database_name');
    

    'your_database_name'替换成你想要查询的数据库名称,这个查询将返回特定数据库中的锁信息。

  4. 查询持有锁的进程

    SELECT * FROM pg_locks WHERE pid = 12345;
    

    12345替换成你想要查询的进程ID,这个查询将返回特定进程持有的锁的信息。

  5. 查询等待锁的进程

    SELECT * FROM pg_locks WHERE granted = false;
    

    这个查询将返回所有正在等待锁的进程的信息。

  6. 结合pg_stat_activity视图查询锁信息

    SELECTpg_stat_activity.pid,pg_stat_activity.query,pg_locks.locktype,pg_locks.mode,pg_locks.relation::regclass,pg_locks.transactionid,pg_locks.virtualxid,pg_locks.virtualtransaction,pg_locks.granted
    FROM pg_stat_activity
    JOIN pg_locks ON pg_stat_activity.pid = pg_locks.pid
    WHERE pg_locks.granted = false;
    

    这个查询将结合pg_stat_activity视图和pg_locks视图,返回所有正在等待锁的会话以及持有这些锁的会话的信息。

通过这些查询,你可以有效地监控和分析PostgreSQL中的锁状态,以识别潜在的锁争用和死锁问题,并优化数据库性能。

pg_locks

从你提供的pg_locks查询结果来看,我们可以看到多个relation类型的锁,这些锁都是针对特定relation(即表)的。这里是一些关键点的解释:

  1. locktyperelation表示这些锁是针对整个表的。
  2. database:数据库的OID,这里是24975
  3. relation:表的OID,例如167953167950等。
  4. pid:持有锁的进程ID,例如589215947943179等。
  5. mode:锁的模式,这里大多数是AccessShareLock,表示共享锁,允许多个事务并发读取数据。
  6. grantedt表示锁已经被授予,f表示锁正在等待。
  7. fastpatht表示这个锁是通过快速路径授予的,f表示不是。
  8. waitstart:如果锁正在等待,这里会显示等待开始的时间。

分析锁的状态

  • 已授予的锁:大多数锁的granted列显示为t,表示这些锁已经被授予,事务可以继续执行。
  • 等待中的锁:有少数锁的granted列显示为f,表示这些锁正在等待。例如,167960167963167970的锁正在等待。

进一步的步骤

  1. 查看等待锁的详细信息
    如果你想要查看哪些事务正在等待这些锁,可以使用以下查询:

    SELECT * FROM pg_stat_activity
    WHERE pid IN (58921, 59479, 43179, 59242, 59535, 59536)
    AND state = 'idle';
    

    这个查询将返回持有或等待锁的进程的详细信息。

  2. 查看锁的等待时间
    如果锁正在等待,你可能想要知道它们已经等待了多久:

    SELECT pid, waitstart
    FROM pg_locks
    WHERE granted = false;
    
  3. 解决锁问题
    如果你发现有事务长时间持有锁或者等待锁,可能需要进一步分析这些事务的查询,考虑优化查询或者调整事务的执行顺序。

通过这些步骤,你可以更好地理解和管理PostgreSQL中的锁,以优化数据库性能和避免潜在的死锁问题。

wait_event_type

从你提供的pg_stat_activity视图中的wait_event_typewait_event列的信息来看,我们可以分析出以下内容:

  1. pid:进程ID,标识了当前正在等待的数据库进程。

  2. wait_event_type:等待事件的类型,它描述了进程正在等待的资源类型。可能的值包括LWLock(轻量级锁)、IO(输入/输出操作)等。

  3. wait_event:具体的等待事件,它提供了更详细的信息,说明进程正在等待什么。例如,WALWrite表示进程正在等待WAL(Write-Ahead Logging)写入操作完成,WALSync表示进程正在等待WAL同步操作完成。

分析结果

  • 进程79424、102543、102632、102633、77589:这些进程没有列出具体的等待事件,这意味着它们可能没有等待任何事件,或者正在执行一些不需要等待特定资源的操作。

  • 进程60269和61544:这两个进程都在等待WALWrite事件。这表明它们可能正在执行写入操作,并且正在等待WAL缓冲区中的数据被写入磁盘。这是数据库操作中的一个常见步骤,尤其是在处理大量写入时。

  • 进程61683:这个进程正在等待WALSync事件。这意味着它正在等待WAL缓冲区中的数据被同步到磁盘。这是确保数据持久性的重要步骤,特别是在事务日志中。

可能的影响和解决方案

  • WAL写入等待:如果多个进程长时间等待WALWriteWALSync,这可能表明WAL写入速度较慢,可能是由于磁盘I/O性能瓶颈或WAL缓冲区设置不当。可以考虑以下解决方案:

    • 检查磁盘性能和I/O子系统。
    • 增加WAL缓冲区的大小。
    • 优化WAL相关的配置参数,如wal_levelwal_buffers等。
  • 监控和优化:持续监控这些等待事件,特别是在高负载情况下,可以帮助识别性能瓶颈。使用pg_stat_activity视图可以帮助你实时监控数据库的运行状态,并及时调整配置以优化性能。

通过这些分析,你可以更好地理解数据库进程的等待行为,并采取相应的措施来优化数据库的性能和稳定性。

三、查看会话

SELECT datname, usename, COUNT(*) FROM pg_stat_activity WHERE datname != 'postgres' AND usename != 'postgres' GROUP BY datname, usename;
select pid,wait_event_type,wait_event from pg_stat_activity WHERE datname != 'postgres' AND usename != 'postgres' AND state != 'idle' ; 
select pid,wait_event_type,wait_event from pg_stat_activity WHERE state != 'idle' ; 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/14653.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【二叉搜素树】——LeetCode二叉树问题集锦:6个实用题目和解题思路

文章目录 计算布尔二叉树的值求根节点到叶节点的数字之和二叉树剪枝验证二叉搜索树二叉搜索树中第K小的元素二叉树的所有路径 计算布尔二叉树的值 解题思路: 这是一个二叉树的布尔评估问题。树的每个节点包含一个值,其中叶子节点值为 0 或 1&#xff0…

2023年MathorCup数学建模A题量子计算机在信用评分卡组合优化中的应用解题全过程文档加程序

2023年第十三届MathorCup高校数学建模挑战赛 A题 量子计算机在信用评分卡组合优化中的应用 原题再现: 在银行信用卡或相关的贷款等业务中,对客户授信之前,需要先通过各种审核规则对客户的信用等级进行评定,通过评定后的客户才能…

嵌入式开发套件(golang版本)

1. watchdog(软件看门狗:守护升级) 2. gate(主程序) 3. web(api版本 升级包) OTA 升级流程 watchdog启动后检查守护进程gate是否正在运行,如果没有,api对比版本号&am…

解压专家 2.4.12| 多功能解压缩工具,支持密码共享、音乐播放和歌词匹配。

解压专家是一款功能强大的解压缩软件,提供了类似于WIFI万能钥匙的密码分享功能,帮助用户快速获取共享的解压密码。作为专业的解压缩工具,它支持多种常见和不常见的压缩包格式,如ZIP、RAR、7z、TAR.GZ和ISO等,并且还支持…

并发编程(10)——内存模型和原子操作

文章目录 十、day101. 内存模型基础1.1 对象和内存区域1.2 改动序列 2. 原子操作及其类型2.1 原子操作2.2 原子类型2.3 内存次序2.4 std::atomic_flag2.4.1 自旋锁 2.5 std::atomic&#xff1c;bool&#xff1e;2.6 std::atomic<T*>2.7 标准整数原子类型2.8 std::atomic&…

【Flink】-- flink新版本发布:v2.0-preview1

目录 1、简介 2、非兼容变更 2.1、API 2.2、连接器适配计划 2.3、配置 2.4、其它 3、重要新特性 3.1、存算分离状态管理 3.2、物化表 3.3、批作业的自适应执行 3.4、流式湖仓 4、附加 4.1、非兼容性的 api 程序变更 4.1.2、Removed Classes # 4.1.3、Modified Cl…

ffmpeg+D3D实现的MFC音视频播放器,支持录像、截图、音视频播放、码流信息显示等功能

一、简介 本播放器是在vs2019下开发&#xff0c;通过ffmpeg实现拉流解码功能&#xff0c;通过D3D实现视频的渲染功能。截图功能采用libjpeg实现&#xff0c;可以截取jpg图片&#xff0c;图片的默认保存路径是在C:\MYRecPath中。录像功能采用封装好的类Mp4Record实现&#xff0c…

webpack指南

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;webpack篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来webpack篇专栏内容:webpack-指南 概念 中文&#xff1a; webpack | webpack中文文档 | webpack中文网 英文&…

把越南语翻译成中文一般用什么翻译工具?《越南语翻译通》App或许能满足你的技术痛点需求!

在多语言交流日益频繁的今天&#xff0c;掌握越南语对于商务、旅游或学术交流都是一项重要技能。《越南语翻译通》App应运而生&#xff0c;旨在通过技术手段简化越南语学习和翻译过程&#xff0c;满足用户在不同场景下的需求。 核心技术 《越南语翻译通》App采用了先进的自然语…

Android Framework AMS(16)进程管理

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节主要解读AMS 进程方面的知识。关注思维导图中左上侧部分即可。 我们本章节主要是对Android进程管理相关知识有一个基本的了解。先来了解下L…

Rust Struct 属性初始化

结构体是用户定义的数据类型&#xff0c;其中包含定义特定实例的字段。结构有助于实现更容易理解的抽象概念。本文介绍几种初始化结构体对象的方法&#xff0c;包括常规方法、Default特征、第三方包实现以及构建器模式。 Struct声明与初始化 struct Employee {id: i32,name: …

Vue全栈开发旅游网项目(10)-用户管理后端接口开发

1.异步用户登录\登出接口开发 1.设计公共响应数据类型 文件地址&#xff1a;utils/response404.py from django.http import JsonResponseclass BadRequestJsonResponse(JsonResponse):status_code 400def __init__(self, err_list, *args, **kwargs):data {"error_c…

数据结构:队列

目录 概念与结构底层结构的选择队列的实现队列头文件&#xff08;queue.h&#xff09;队列初始化队列的销毁入队列检查队列是否为空出队列查询队列第一个数据查询队列末尾数据查询队列有效数据个数代码试运行 概念与结构 概念&#xff1a;只允许在⼀端进行插⼊数据操作&#x…

Clickhouse集群新建用户、授权以及remote权限问题

新建用户 create user if not exists user on cluster 集群名称 IDENTIFIED WITH plaintext_password BY 密码;给用户授查询、建表、删表的权限 GRANT create table,select,drop table ON 数据库实例.* TO user on cluster 集群名称 ;再其他节点下用户建本地表成功&#…

JavaWeb--MySQL

1. MySQL概述 首先来了解一下什么是数据库。 数据库&#xff1a;英文为 DataBase&#xff0c;简称DB&#xff0c;它是存储和管理数据的仓库。 像我们日常访问的电商网站京东&#xff0c;企业内部的管理系统OA、ERP、CRM这类的系统&#xff0c;以及大家每天都会刷的头条、抖音…

i春秋-SQLi(无逗号sql注入,-- -注释)

练习平台地址 竞赛中心 题目描述 后台有获取flag的线索应该是让我们检查源码找到后台 题目内容 空白一片 F12检查源码 发现login.php 访问login.php?id1 F12没有提示尝试sql注入 常规sql注入 //联合注入得到表格列数 1 order by 3 # 1 union select 1,2,3 #&#xff08…

基于Spring Boot的电子商务平台架构

2 相关技术 2.1 SpringBoot框架介绍 Spring Boot是一种不需要代码生成的一种框架&#xff0c;并且可以不需要配置任何的XML文件就可以&#xff0c;因为Spring Boot里面自带了很多接口&#xff0c;只需要配置不同的接口就会自动的应用并且识别需要的依赖&#xff0c;在配置方面非…

华为云分布式缓存服务(DCS)专家深度解析Valkey,助力openEuler峰会

在数字化时代&#xff0c;开源技术已成为推动创新和协作的重要力量。 11月15日&#xff0c;openEuler峰会将于北京中关村国际创新中心举行。本次峰会&#xff0c;华为云分布式缓存服务&#xff08;DCS&#xff09;的两位专家将为大家深入讲解Valkey的核心特性与优势。 更多大…

如何进行产线高阶能耗数据的计算和可视化?

一、前言 在当前经济下行时期&#xff0c;越来越来多企业开始对产线进行数字化转型&#xff0c;提高企业竞争力。在产线数字化转型过程中&#xff0c;产线高阶能耗数据的计算和可视化是比较重要的一环&#xff0c;今天小编就和大家分享如何对产线能耗数据进行计算和可视化。 …

vsftp 修改端口 限制用户登录 开启防火墙 pasv模式

安装设置开机启动 yum -y install vsftpd systemctl start vsftpd systemctl enable vsftpd 修改配置&#xff0c;追加端口号到最后一行 vim /etc/vsftpd/vsftpd.conf listen_port5510 编辑 /etc/services 文件&#xff0c;将其中的三行端口改成5510 vim /etc/services ftp …