pg数据库cpu飙升

    之前在项目中遇到过postgresql数据库服务器cpu周期性的飙升,这里后来排查原因是某个全表查询过于频繁,查询时没有对于查询条件添加索引,这里分析一下整个排障过程。

    首先登录到服务器上面,使用top命令查询哪个pg进程的cpu非常高,记录下这个进程PID,

然后到我们的数据库上面根据进程ID使用下面的SQL语句,查询具体哪条SQL导致数据库CPU飙升。

SELECT

30 procpid,

31 start,

32 now() - start AS lap,

33 current_query

34 FROM

35 (SELECT

36 backendid,

37 pg_stat_get_backend_pid(S.backendid) AS procpid,

38 pg_stat_get_backend_activity_start(S.backendid) AS start,39 pg_stat_get_backend_activity(S.backendid) AS current_query

40 FROM

41 (SELECT pg_stat_get_backend_idset() AS backendid) AS S

42 ) AS S

43 WHERE

44 current_query <> '<IDLE>' and procpid ='7896'   ---procpid 对应进程号

45 ORDER BY

46 lap DESC;

后面查询到具体的SQL后,进行相应的SQL优化

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容