检查应用连接数
如果应用程序与数据库的连接数超过最大值,则新的连接无法建立。建议每天检查连接数,及时释放空闲的连接或者增加最大连接数。
操作步骤
1、以操作系统用户vastbase登录数据库主节点。
2、使用如下命令连接数据库。
vsql -d postgres -p 5432
postgres为需要连接的数据库名称;5432为数据库主节点的默认端口号。
连接成功后,系统显示类似如下信息:
vsql ((Vastbase G100 V2.2 (Build x) Alpha) compiled at 2022-06-10 02:16:40 commit 7387 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=#
3、执行如下SQL语句查看连接数。
SELECT count(*) FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s;
显示类似如下的信息,其中21表示当前有21个应用连接到数据库。
count
-------
21
(1 row)
4、查看现有最大连接数。
SHOW max_connections;
显示信息如下,其中200为现在的最大连接数。
max_connections
-----------------
200
(1 row)
异常处理
如果显示的连接数接近数据库的最大连接数max_connections,则需要考虑清理现有连接数或者增加新的连接数。
1、执行如下SQL语句,查看state字段等于idle,且state_change字段长时间没有更新过的连接信息。
SELECT * FROM pg_stat_activity where state='idle' order by state_change;
显示类似如下的信息:
datid | datname | pid | sessionid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | xact_start | query_start
| state_change | waiting | enqueue | state | resource_pool | query_id | query | connection_info | unique_sql_id | trace_id
-------+----------+----------------+----------------+----------+----------+------------------------+-------------+-----------------+-------------+-------------------------------+------------+------------
-+-------------------------------+---------+---------+-------+---------------+-------------------+-------+-----------------+---------------+----------
16475 | postgres | 47429099063040 | 47429099063040 | 10 | vastbase | statement flush thread | | | | 2022-08-02 17:11:38.109267+08 | |
| 2022-08-02 17:11:38.109358+08 | f | | idle | default_pool | 0 | | | 0 |
16475 | postgres | 47429039163136 | 47429039163136 | 10 | vastbase | WDRSnapshot | | | | 2022-08-02 17:11:38.108251+08 | |
| 2022-08-03 09:22:30.404077+08 | f | | idle | default_pool | 52917295621603328 | | | 0 |
(2 rows)
2、释放空闲的连接数。
查看每个连接,并与此连接的使用者确认是否可以断开连接,或执行如下SQL语句释放连接。其中,pid为上一步查询中空闲连接所对应的pid字段值,以47429099063040为例。
SELECT pg_terminate_backend(47429099063040);
显示类似如下的信息:
pg_terminate_backend
----------------------
t
(1 row)
如果没有可释放的连接,请执行下一步。
3、增加最大连接数并重启生效。
1)、以操作系统用户vastbase登录数据库主节点。
2)、执行如下命令将连接数修改为800。
vb_guc set -D /home/vastbase/data/vastbase -c "max_connections= 800"
其中/home/vastbase/data/vastbase为配置文件postgresql.conf所在位置;800为新修改的连接数。
3)、重启数据库服务使新的设置生效。
vb_ctl restart
重启Vastbase操作会导致用户执行操作中断,请在操作之前规划好合适的执行窗口。