問題描述
kingbase 連接數太多, 清理數據庫連接數
[root@FCVMDZSZNST25041 ~]# su root
[root@FCVMDZSZNST25041 ~]#
[root@FCVMDZSZNST25041 ~]# su kingbase
[kingbase@FCVMDZSZNST25041 root]$
[kingbase@FCVMDZSZNST25041 root]$ ksql
could not change directory to "/root": 權限不夠
ksql: error: could not connect to server: 致命錯誤: 對不起, 已經有太多的客戶
[kingbase@FCVMDZSZNST25041 root]$
解決方案
注意事項:
- 生產環境建議先使用 kill -TERM 嘗試優雅關閉
- 強制關閉 (kill -9) 可能導致數據損壞,僅在必要時使用
- 關閉前確保沒有重要事務正在執行
- 如果有連接池,也需要相應關閉
查看所有 kingbase 進程,第 2 列為進程 ID
ps -ef | grep kingbase | grep -v grep
刪除指定進程 ID
# 優雅關閉
kill -TERM 進程ID# 強制關閉
kill -9 進程ID# 驗證是否已刪除
ps aux | grep kingbase | grep -v grep
批量終止所有空閑進程
# 使用pgrep查找所有kingbase test_rdb 的空閑進程,
pgrep -f "kingbase: kingbase test_rdb.*idle" | xargs kill -9# 或更精確的匹配
ps -ef | grep "kingbase: kingbase test_rdb.*idle" | grep -v grep | awk '{print $2}' | xargs kill -9
強制關閉所有進程
# 一次性關閉所有kingbase進程
pkill -9 kingbase# 驗證是否關閉
pgrep kingbase || echo "所有kingbase進程已終止"
備用命令
-- 顯示數據庫時區
SHOW timezone-- 查詢兼容模式參數
SHOW database_mode;-- 查看最大并發連接量
SHOW max_connections;--查詢數據庫所有進程連接數
SELECT * FROM pg_stat_activity--查詢數據庫應用程序連接數
SELECT * FROM pg_stat_activity where datid>0 --關閉空閑連接,需要執行2次
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state = 'idle' --關閉Navicat工具的空閑連接,需要執行2次
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state = 'idle'
AND application_name='Navicat'
AND pid <> pg_backend_pid();--查詢license有效期
select GET_LICENSE_VALIDDAYS();