https://www.centos.bz/2017/08/postgresql-cpu-100-slow-sql/
PostgreSQL CPU占用100%性能分析及慢sql查询优化查看连接数变化追踪慢SQL1、第一种方法是使用pg_stat_statements插件定位慢SQL,步骤如下。1.1 如果没有创建这个插件,需要手动创建。我们要利用插件和数据库系统里面的计数信息(如SQL执行时间累积等),而这些信息是不断累积的,包含了历史信息。为了更方便的排查当前的CPU满问题,我们要先重置计数器。1.2 等待一段时间(例如1分钟),使计数器积累足够的信息。1.3 查询最耗时的SQL(一般就是导致问题的直接原因)。1.4 查
pg_qtop
简单的 ruby 程序,显示使用 pg_stat_statements 运行的查询。
这与 pg_stat_activity 视图不同,它显示自程序启动以来运行的所有查询,而不仅仅是在您查看它时运行的查询。
gem install pg_qtop
pg_qtop -d DATABASE -h HOSTNAME -p PORT -U USER
为了过滤某个表上的查询,用-t指定它:
pg_qtop -d DATABASE -t TABLE
您还可以过滤使用-s显示的语句类型,例如:
pg_qtop -d DATABASE -t TABLE -s insert
AVG | CALLS | HIT RATE | QUERY
------------------------------------------------
PostgreSQL此扩展可帮助您查找PostgreSQL数据库中最耗费资源的活动。
该扩展基于PostgreSQL统计视图以及contrib扩展pg_stat_statements和pg_stat_kcache 。 它是用纯pl / pgsql编写的,不需要任何外部库或软件,但是PostgreSQL数据库本身和执行定期任务的类似cron的工具。 最初在PostgreSQL 9.6扩展上开发和测试的版本可能与早期版本不兼容。
此扩展将在您的数据库中创建历史存储库。 该存储库将保存您的postgres集群的统计信息“样本”。 通过调用take_sample()函数获取样本。 PostgreSQL没有任何类似于工作的引擎,因此您需要使用cron 。
定期抽样可以帮助您找到过去最耗费资源的活动。 假设您在几个小时前被报告性能下降。 解决此问题后,您可以在两个限制
postgresql.conf
shared_preload_libraries = 'timescaledb, pg_stat_statements' # (change requires restart)
pg_stat_statements.max = 10000
pg_stat_statements.track = all
最后重启postgrelSQL
您可以根据需要向config.yml文件中添加任意数量的数据库连接,并使用以下命令运行它:
./postgresql_exporter -config=my/config.yml
然后,您可以将主机名:9111添加到prometheus scrapes配置中:
- job_name : ' postgresql '
static_configs :
- targets : ['localhost:9111']
而且,指标应该存在,并且您应该能够查询,绘制图形并对其发出警报。
设置受限的监控用户
默认情况下,某些统计视图(例如pg_stat_statements和pg_stat_activity)不允许查看其他用户运行的查询,除非您是数据库超级用户。 由于您可能不希望监视以超级用户身份运行,因此可以这样设置一个单独的监视用户:
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTE
select * from int_twilio_twilionumber where merchant_id = 1234 and active = true and "default"=true
order by date_created limit 1
这个查询竟然发了2-3分钟无法回复。
1. 查看表大小 800MB:, 表记录大概4000条。
SELEC...
阿里云服务器被攻击,CPU被占满cpu占用99.9%
cpu占用99.9%
这两天发现服务器上cpu一直是满负荷,查看了一下top发现是postgres的[ddns]占满了,网上搜了一下postgres的cpu占用问题,都说是sql查询的问题,可我sql都停了,没有查询,cpu还是占用接近99.9%,搜索ddns看看是什么也没查出来为什么cpu占用这么高。
切换postgres用户ps -ux查看该命令 ./[ddns] --config=./[ddns].pid
查了一下发现有个目录,里面有这个文件,
查看当前活跃的DB session 正在运行的SQL语句(运行时间超过10秒)
SELECT now() - query_start as "runtime", usename,application_name, client_hostname, datname, state, query
FROM pg_stat_activity
WHERE now() - query_start > '10 seconds'::interval
and state!='id
PostgreSQL/PPAS CPU使用率高的排查及解决办法一、问题描述二、解决方案三、追踪慢SQL四、处理慢SQL
一、问题描述
RDS for PostgreSQL/PPAS使用过程中,可能会遇到CPU使用率过高甚至达到100%的情况。本文将介绍造成该状况的常见原因以及解决方法,并通过CPU使用率为100%的典型场景,来分析引起该状况的排查及其相应的解决方案。
二、解决方案
如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
如果您对实例(包括但不限于ECS、RD
一、 问题描述
值班同学发现一实例性能异常,用户反馈实例不可用。监控显示出现死锁,并且执行简单sql例如select 1也会“卡住”。持续一段时间后恢复
抓取了某几个卡在parse环节的sql进程堆栈,大致如下:
[postgres@postgres ~]$ ps -ef|grep pgbase|head -10|grep -v grep
postgres 13622 89757 93 16:02 ? 00:00:28 postgres: pguser pgbase 192.138.23.
postgresql自带提供了一款轻量级的压力测试工具:pgbench
可自行编写脚本,按自己的需求对数据库进行性能压力测试
postgres软件安装配置,默认安装的位置是 /pg根目录/bin
在用pgbench操作前,先了解下pgbench命令:
-c NUM 数据库客户端并发数(默认:1)
-C (为每个事务建立新的连接)
-D VARNAME=VALUE...