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,结果是: 第二个脚本topsql.sh,试试查看全部的进程sql执行情况 #/bin/bash 第三个脚本,kill占用资源高的session
# use to kill one session. # if test -z $1; then [pgsql@webtrends bin]$ ./killsession.sh 3665 刚才那个很占资源的session的目前的SQL操作就被cancel掉了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |