日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux查找postgre进程,postgresql数据库某一个进程占用大量CPU,问题排查详解

發布時間:2023/12/2 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux查找postgre进程,postgresql数据库某一个进程占用大量CPU,问题排查详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

postgresql某一個進程占用大量

CPU,問題排查,目前服務器cpu為4核,內存8G

1.查下是不是我們的業務SQL

SELECT

procpid,

START,

now() - START AS lap,

current_query

FROM (SELECT

backendid,

pg_stat_get_backend_pid(S.backendid)??????????? AS procpid,

pg_stat_get_backend_activity_start(S.backendid) AS START,

pg_stat_get_backend_activity(S.backendid)?????? AS current_query

FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS S) AS S

WHERE current_query <> '' AND procpid = 35500

ORDER BY lap DESC;

2.linux root shell下面執行updatedb

updatedb 是重建本地文件索引,沒有影響

3.locate x2fca82f6

x2fca82f6是占用大量CPU的進程名稱,大概是99%左右。

4.查詢進程文件所在的目錄。

find / -name x2fca82f6

/tmp/x2fca82f6 文件所在的目錄和文件名。

5.cat /tmp/x2fca82f6

打開后里面是亂七八糟的內容,該文件很可疑!!!

6.嘗試先修改這個文件的執行權限,讓他不可運行,然后殺進程,看看對業務有沒有影響。

在tmp下面打chmod 600 x2fca82f6 修改成不可修改,該執行文件變成白色。

7.執行ps -ef | grep x2fca82f6???? 返回進程號35500。

用root用戶執行kill語句 kill -9 35500,cpu立馬降下來了,變為0.2%左右。

8.CPU肯定是恢復了,現在只需要確認對業務有沒有影響就行了,執行一下業務sql,看看剛剛殺的進程對業務是否有影響。

數據庫沒有報錯,但是cpu又上來了。

9.在tmp下面mkdir bak,創建一個備份文件夾,然后把那個進程文件剪切進去

命令:mv x2fca82f6 bak

11.繼續操作業務sql,看看還能起來不,或者數據庫是否報錯,后來看都正常。

過了一會發現cpu又上來了。

12.猜測有程序能預編譯這個東西...

13.查詢下后臺在運行的sql語句吧,能自動預編譯應該是PGSQL自己編譯的程序

發現沒有業務sql,都是一些系統sql

SELECT

procpid,

START,

now() - START AS lap,

current_query

FROM (SELECT

backendid,

pg_stat_get_backend_pid(S.backendid)??????????? AS procpid,

pg_stat_get_backend_activity_start(S.backendid) AS START,

pg_stat_get_backend_activity(S.backendid)?????? AS current_query

FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS S) AS S

WHERE current_query <> ''

ORDER BY lap DESC;

14.建一個查詢死鎖和慢sql的視圖,sql語句太大了,就不列出來了。

建好之后發現沒有查出數據。

15.執行如下sql語句

select?nspname?from?pg_namespace?where?nspname?like?'pg_temp%'

發現也沒有數據,就算了。

16.執行如下sql,有就刪除,沒有就算了

drop?schema?if?exists?pg_temp_1?cascade;

17.查看一下數據庫連接數

select count( * ) from pg_stat_activity where state not like '%idle';

返回1,說明正常。

18.猜測postgresql數據庫沒有安裝好,或者是配置有問題。

19.執行如下sql

select * from pg_stat_user_tables where n_live_tup > 100000 and seq_scan > 0 order by seq_tup_read desc limit 10;

發現返回數據為空。

20.最后升級了服務器的cpu和內存到8核和32G,然后重啟了該數據庫服務器,后面cpu一直都是0.2%左右,一直到第二天早上都很穩定。

21.進入/tmp/目錄,把文件改名

mv x2fca82f6 xx2fca82f6_bak

22.ps auxw |? grep postgres | grep -- -D????? 返回結果如下:

postgres 45123? 0.0? 0.0 340208 15396 ???????? S???? 2017?? 0:06 /usr/pgsql-9.5/bin/postgres -D /var/lib/pgsql/9.5/data

24.cd pg_log

里面都是

postgresql日志文件

25.分析日志里面文件里面的內容來查找端倪,完事。

26.本文為蝦米哥原創,轉載請注明來源地址www.itxm.net

27.本文原文鏈接:http://www.itxm.net/a/shujuku/2018/0102/1481.html,轉載請注明來源地址,謝謝!

轉載請注明來源網站:www.itxm.cn謝謝!

總結

以上是生活随笔為你收集整理的linux查找postgre进程,postgresql数据库某一个进程占用大量CPU,问题排查详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。