背景
今天有同事说连接不上开发环境的PG库,提示“sorry, too many clients already”。看提示是PG库的连接数被占满了。想着我们开发环境有很多应用共用这一个PG库,所以经常出现连接数被占满的情况,干脆一不做二不休把开发环境的PG库的最大连接数调大就完事了,反正是开发库,使劲造就完事了,也避免之后再出现链接数被占满的情况,影响开发人员的工作流畅度。
修改过程
查看最大连接数
登录开发环境的PG库,执行下述命令,查看目前数据库的最大连接数是多少:
show max_connections;
查看pg库设置max_connections的配置文件的路径
开发环境的PG库,执行下述命令:
select name, setting, boot_val, reset_val, sourcefile from pg_settings where name = 'max_connections';
-- name = 配置项名字
-- setting = 配置项的value
-- boot_val = 配置项的初始化value
-- sourcefile = 配置项所在的配置文件的路径
修改目标配置文件
上一步中我们找到了PG库配置最大链接数的配置文件的路径。只要修改对应的配置文件中的max_connections的值就行了。可是当我登录到PG库所在的服务器之后,在指定路径下却没有pg库的配置文件,瞬间傻眼。转念一想我们的PG库貌似是用docker容器启动的,遂执行
docker ps
果然看到了正在运行中的PG库容器。 既然知道了PG库是以docker容器的方式启动的那就方便了。有两种方式修改PG库的配置文件:
1、 登录到容器中,修改上一步查出的PG库的配置文件,即可
docker exec -it {容器ID} /bin/bash
不过可能会遇到docker容器中没有vi、vim等文本编辑工具的情况就很尴尬了。 2. 如果无法在容器内直接修改目标配置文件,我们可以通过docker inspect命令来查看目标容器在宿主机上挂载的目录,去宿主机上找到目标PG库配置文件直接改就完事了:
docker inspect {容器id} | grep Mounts -A 20
重启PG库
因为我们的PG库是docker容器启动的,所以直接重启对应的docker容器就行,命令如下:
docker restart {容器ID}
如果PG库是普通应用的话,就在服务器上执行pg库的重启命令即可:
pg_ctl reload
验证
登录PG库,执行命令查看最大连接数的值是否已经改成我们刚刚配置的值:
show max_connections;
参考
PG数据库查看当前连接数和最大连接数
postgresql修改最大连接数配置
docker:如何查看容器的挂载目录 docker常规操作——启动、停止、重启容器实例