2015-07-13 99 views
-1

是否有任何自動化工具允許重新啓動PostgreSQL,或只需在沒有更多連接插槽時終止所有讀取器上的所有掛起查詢? 問題是,有時由於未知原因(讀取速度緩慢),讀取器的所有連接都處於使用狀態,我們需要快速和骯髒的解決方案來監視讀取器,並在事件發生時終止所有查詢。 我知道這是更可能的解決方法掩蓋真正的問題,但目前我的任務是編寫一個腳本來做這件事,但我很確定已經有工具可以使用。 我做的研究讓我看到以下結果:Nagios。 不幸的是,我仍在等待我的票據由服務器支持團隊處理。是否有任何工具允許在沒有更多連接插槽時重新啓動PostgreSQL

回答

1

的PostgreSQL的版本9.4

參考The Statistics Collector

select pid, query from pg_stat_activity where waiting='t'; 

參考Function-Admin: pg_cancel_backend

select pg_cancel_backend(pid of the postgres process); 

一個簡單的bash腳本。你甚至可以通過命令行的參數

#!/bin/bash 
dbname="Test" 
username="postgres" 
vartest=`psql -d $dbname -U $username -h localhost -p 5432 -t -c "select pid from pg_stat_activity where waiting='f';"` 
for p_var in ${vartest[@]} 
do 
# This is an admin function please read more on function-admin in the postgres documentation 

# q_result= `psql -d $dbname -U $username -h localhost -p 5432 -t -c "SELECT pg_cancel_backend('$p_var');"` 

# sanitiy check just grabs the pid and related query 

q_result=`psql -d $dbname -U $username -h localhost -p 5432 -t -c "select pid, query from pg_stat_activity where pid='$p_var';"` 
done 
相關問題