请教大家个问题:pg数据库突发性能衰减,每个sql的执行时间都为正常情况的数倍,每个pg查询进程的cpu都在95%以上,服务器cpu被耗尽,pg_stat_activity里没看到等待事件,pg_lock里也没看到锁竞争,通过strace查看一个查询进程的系统调用,发现一直在执行select,大家有什么排查思路吗
请教大家个问题:pg数据库突发性能衰减,每个sql的执行时间都为正常情况的数倍,每个pg查询进程的c[阿里云PolarDB]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
可能是由于数据库中的某些表或索引出现了性能问题,导致查询变慢。可以通过检查数据库的性能指标,例如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 查看当前连接池的情况,如果连接池已经用完,可以考虑增加连接池的大小或者优化代码以减少连接数量。