1. 程式人生 > >postgresql 的程序監控&管理

postgresql 的程序監控&管理

首先,在postgresql.conf中把stats_command_string = true開啟,使PostgreSQL的stats collector process監控每個session的sql語句。

第一個指令碼 viewsql.sh: 根據pid檢視程序的sql執行情況
#!/bin/sh # viewsql.sh #
# use to show all active session's sql in PostgreSQL.
# ######################################################
if test -z $1 ;then
echo "Usage:$0 pid"
exit 10
fi
echo "select * from (SELECT pg_stat_get_backend_pid(s.backendid) AS 
procpid, pg_stat_get_backend_activity(s.backendid) AS current_query FROM 
(SELECT pg_stat_get_backend_idset() AS backendid) AS s) as querystring 
where procpid=$1;" | psql


這個指令碼是顯示指定的pid的session目前正在執行的sql語句。
可以這麼監控當前最佔資源的的程序的sql


top -b -c -n 1 |grep -v grep|grep -i postgre | awk '{print $1}'| while read i ;do ./viewsql.sh $i ; done;


我用top -c,結果是: 
3665 pgsql 15 0 124M 124M 122M R 30.0 2.1 0:04 postgres: pgsql pgsql [local] INSERT 
可以看到:3665這個pid顯示在第一條,說明它的sql可能效率比較低。 
[

[email protected] bin]$ ./viewsql.sh 3665
procpid | current_query 3665 | insert into access_log select * from access_log ;
(1 row)


第二個指令碼topsql.sh,試試檢視全部的程序sql執行情況
#/bin/bash
while [ 1==1 ];do
 ps ux |grep -i "postgres:" | grep -v "grep" | sort -n -k 3 -r | awk '{print $2 ,$3 }' | 
 while read i ; do
   x=($i);
   psql  -qt -c  "select  ${x[1]} as cpu_used ,* from (SELECT pg_stat_get_backend_pid(s.backendid) AS 
procpid, pg_stat_get_backend_activity(s.backendid) AS current_query FROM 
(SELECT pg_stat_get_backend_idset() AS backendid) AS s) as querystring 
where procpid=${x[0]};"; 
     done;
sleep 1;
done;

第三個指令碼,kill佔用資源高的session

提供一個KILL一個session的指令碼,比如:有個session佔用的資源太多,如果不kill掉他的話,可能會導致系統DOWN機。 
killsession.sh:

#!/bin/sh
# use to kill one session. #
if test -z $1; then
echo "Usage:$0 pid"
exit 10
fi
SID=$1
echo "select pg_cancel_backend($SID);"|psql


[[email protected] bin]$ ./killsession.sh 3665
pg_cancel_backend 1
(1 row)


剛才那個很佔資源的session的目前的SQL操作就被cancel掉了。

相關推薦

postgresql程序監控&管理

首先,在postgresql.conf中把stats_command_string = true開啟,使PostgreSQL的stats collector process監控每個session的sql語句。第一個指令碼 viewsql.sh: 根據pid檢視程序的sql

給自己看的Linux程序監控管理

root 4538 2.8 0.4 51116 8712 pts/2 SL+ 18:59 0:44 mplayer /mnt/usb/music/20080625211631.mp3 /mnt/usb/music/46250194.mp3 /mnt

AIX程序監控管理

AIX程序監控與管理 效能優化以及確定系統中的效能瓶頸是系統管理員的主要任務之一. 在一個計算機系統中, CPU, 記憶體, 硬碟和網路是影響效能的主要因素, 因此係統效能調整也主要在於如何在這些資源中獲得某種平衡, 

linux程序監控管理

程序狀態 Linux 核心:搶佔式多工 程序型別: 守護程序: daemon, 在系統引導過程中啟動的程序, 和 終端無 關程序 前臺程序:跟終端相關,通過終端啟動的程序 注意:兩者可相互轉化 程序狀態: 執行態:runnin

#12 程序管理與rpm命令的使用

程序包管理與rpm命令的使用Linux的程序包管理:程序:指令+數據程序:算法+數據結構應用程序的存在形式:1.源代碼:包含了整個應用程序的編程語言的所有代碼的文本文件;2.二進制:將源代碼經過一系列的轉換操作之後得到的可以直接執行的文件使用源代碼安裝應用程序:預處理(預處理器) --> 編譯(編譯器)

Linux學習筆記:rpm程序管理

源代碼 rpm 程序包 以CentOS為例,rpm程序包管理器的相關內容如下:CentOS的程序包管理器: 程序包的命名規則: 源代碼包: software_name-VERSION.tar.gz VERSION:major.mino

程序管理之----rpm

程序包管理 rpm 程序是什麽?指令+數據也好,算法+數據結構也罷。它的存在形式有兩種: 1.源代碼:包含了整個應用程序的編程語言的所有代碼的文本文件 2.二進制:將源代碼經過一系列轉換之後得到的直接執行的文件其中,使用源代碼安裝的過程如下: 預處理(用到預處理器) --> 編譯(

ceph監控管理平臺calamari

calamari ceph監控平臺 centos7安裝calamari 支持jewel 環境已有: CentOS 7.3(基礎設施服務器) Ceph 10.2.7(jewel)後部署:Calamari 1.3.3介紹註:介紹和rpm包均出自磨大神博客http://www.zphj1987.co

程序管理程序編譯安裝(第九章)

程序包管理1. 程序包管理工具1.1 dpkg包管理工具 dpkg為基於debian發行版中的程序包管理工具,例如Ubuntu、linxu mint。 aptitude:軟件包管理系統,直接輸入此命令可進入包管理的視圖 dpkg -L Package_Name:列出指定軟件包所包含的全部文件 dpkg -

程序管理(二)yum

yum configure createrepo 編譯安裝 yum倉庫 一、yum簡介 二、客戶端配置文件 三、yum命令使用 四、*.repo的配置文件變量 五、使用本地光盤當做yum倉庫 六、創建yum倉庫 七、程序包的編譯安裝 八、開源程序的源代碼的獲取與安裝 九、configure

程序管理(一)rpm

yum rpm 程序包管理 一、編程語言與操作系統: 應用程序 ____________________ |lib call | | |-------------------| |system call | |————————

【linux基礎】rpm安裝程序管理

rpm使用1.了解應用程序應用程序(app):安裝在os上完成特定功能的軟件。應用程序的類型:*.rpm(redhat分支默認軟件格式),*.deb(debian分支默認軟件格式),源代碼(通用的軟件格式,也是生成rpm和deb的基礎),其他自帶安裝程序及免安裝的軟件。用戶程序常用的目錄:/etc,/var/

謝煙客---------Linux之程序管理yum使用和編譯安裝

linuxyum命令及倉庫創建與配置YUM 原理 安裝、卸載、查詢、升級、檢查,本地緩存、重裝、降級、歷史、獲取幫助倉庫 變量、事務、URL、開銷、鏡像、元數據存儲方式及組成createrepo作用、命令、lftp命令編譯安裝 目的 原理 開發工具及開發環境 編譯後的處理獲取程序包源代

Postgresql 用戶管理

log 用戶管理 沒有 信任 權限 reject -h onf clas 一, 設置超級用戶密碼 1 修改 pg_hba.conf 使超級用戶postgres 可以登錄到數據庫中 host all all 127.0.0.1/32 trust 2 修改

9、程序管理工具

程序包管理1、程序包的組成: 由四部分組成:二進制格式文件、庫文件、配置文件、及幫助文件。 2、程序包管理工具作用:管理工具用來管理程序的安裝、升級、卸載、查詢、校驗等操作。3、項目構建工具:用來解決哪些源文件先編譯,哪些庫文件先編譯,源文件和庫文件的依賴關系。c、c++:程序包項目構建工具:makejava

軟件倉庫的配置及應用程序管理和應用軟件安裝/卸載

ftp web yum 軟件倉庫的配置及應用程序的管理和應用軟件安裝/卸載 一、配置軟件倉庫1.yum簡介 基於rpm軟件包的安裝部署機制 自動解決軟件包的依賴關系 需要先配置軟件倉庫 2.配置本

車聯網監控管理系統

發送 聯網 維護 9.png 分享圖片 實時監控 圖片 markdown 程序 開發環境 IntelliJ IDEA Tomcat V8.5 HTML5、CSS3、JavaScript、jQuery、jQuery-Mobile、高德地圖API 背景介紹 由於車輛租借平臺的興

linux基本操作之yum程序管理

yum在Centos系統中,程序包管理器的核心是rpm: 其後端所使用rpm命令行工具; 前段使用yum命令行工具或dnf命令行工具;程序包管理的前段工具: RHEL/Centos系列發行版linux中,yum和dnf; yum命令行工具: Yellow

linux基本操作之rpm程序管理

rpm在linux中的應用程序結構形式分為三種: 1)源代碼形式 2)二進制形式 3)程序包形式其中源代碼是最權威的,二進制形式經過了一系列的編譯、匯編、連接等等其他操作得到可以執行的程序及其他相關的文件,而程序包形式則是二進制形式進一步進行操作,使之可以自動安裝程序包中的所有文件,當然在卸

以rpm為後端及以yum為前端工具的程序管理器在Linux發行版系統centos中的使用

rpm yum 程序包管理: 應用程序的安裝,實際上是解壓縮並復制程序包中的文件到指定目錄的過程; 程序包管理器: 方便終端用戶進行程序的安裝、卸載、升級、安裝信息查詢及校驗等工作; 不同的Linux的發行版本中,有不同的程序包管理器: Debian:dpt;Redhat:rpm;S.u.S.