PostgreSQL配置max_connections不生效,如何正确调高最大连接数
PostgreSQL max_connections配置不生效解决方案
1. 确认修改的是正确的配置文件
首先登录PostgreSQL执行命令查询实际加载的配置文件路径:show config_file;
不少用户会误改样本文件、其他路径下的旧配置文件,导致修改不会被服务加载。
2. 排查参数被覆盖或格式错误问题
- 检查目标配置文件中的max_connections参数是否存在重复定义,后定义的参数会覆盖之前的配置
- 检查max_connections所在行的行首是否存在
#注释符,删除注释符配置才会生效 - 检查数据目录下的
postgresql.auto.conf文件是否配置了max_connections,该文件由ALTER SYSTEM命令生成,优先级高于postgresql.conf,如果此处配置为500,修改主配置文件不会生效。可以执行show data_directory;查询数据目录路径。
3. 重启PostgreSQL服务生效配置
max_connections属于重启生效类参数,仅重载配置(pg_ctl reload/select pg_reload_conf();)不会生效,必须完全重启服务。
CentOS系统下执行命令(请替换为你实际的PostgreSQL版本号,例如14版本为postgresql-14):systemctl restart postgresql-<版本号>
重启完成后执行show max_connections;即可查看生效值。
额外优化建议
- 不建议设置max_connections=9999,PostgreSQL单个连接会占用约10MB内存,9999个连接仅连接开销就接近100GB,远超你的服务器64GB内存上限,还需要预留资源给Java应用、系统内核,生产环境单实例max_connections建议不超过2000,如有高并发连接需求,建议部署pgbouncer连接池中间件。
- 你的shared_buffers=6GB配置偏低,同机部署Java应用的场景下,shared_buffers可调整为总内存的1/4~1/3,同时预留足够内存给Java堆使用,避免出现OOM问题。
内容的提问来源于stack exchange,提问作者user2645405
相关产品推荐
相关产品推荐

