人大金仓 kingbase 连接数太多, 清理数据库连接数
问题描述
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();