请教大家个问题:pg数据库突发性能衰减,每个sql的执行时间都为正常情况的数倍,每个pg查询进程的cpu都在95%以上,服务器cpu被耗尽,pg_stat_activity里没看到等待事件,pg_lock里也没看到锁竞争,通过strace查看一个查询进程的系统调用,发现一直在执行select,大家有什么排查思路吗
可能是由于数据库中的某些表或索引出现了性能问题,导致查询变慢。可以通过检查数据库的性能指标,例如CPU使用率、内存使用率、磁盘I/O等,来确定是否存在资源瓶颈。另外,可以使用pg_stat_statements等工具来分析查询的执行计划和性能瓶颈,以确定具体的问题所在。如果没有发现明显的性能问题,可以考虑使用pg_top等工具来监控数据库进程的活动情况,以确定是否存在异常的查询进程或者其他进程占用了过多的资源。
看看top sql,有个排查思路的文章你搜索一下。
github.com/digoal/blog
此答案来自钉钉群“PG|POLARDB技术进阶"
如果每个 PG 查询进程的 CPU 都在 95% 以上,可能是因为数据库连接池被耗尽,导致所有请求都需要等待。
可以使用 psql 命令连接数据库并执行 select * from pg_stat_database 查看当前连接池的情况,如果连接池已经用完,可以考虑增加连接池的大小或者优化代码以减少连接数量。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。