如何配置QuestDB服务器避免Postgres协议空闲连接被关闭?
解决QuestDB空闲连接被关闭的配置方案
问题根源
你碰到的psycopg.OperationalError是因为QuestDB的Postgres协议连接默认超时时间为5分钟(300000毫秒),当连接空闲超过这个时长,服务器会主动关闭连接,导致后续执行查询时触发错误。
参数说明与配置方案
pg.net.connection.timeout是控制QuestDB Postgres协议空闲连接超时的核心参数,单位为毫秒:
- 默认值
300000对应5分钟,超过该时长的无操作连接会被服务器回收 - 设置为
0表示禁用空闲连接超时,服务器不会主动关闭任何空闲连接,这是直接解决你问题的有效方案
具体配置方式
- 修改配置文件
找到QuestDB安装目录下conf文件夹中的server.conf,添加或修改如下配置:
pg.net.connection.timeout=0
修改完成后重启QuestDB服务生效。
- 启动时传参
如果不想修改配置文件,可以在启动QuestDB时通过命令行参数指定:
./questdb.sh -pg.net.connection.timeout=0
额外优化建议
设置0能直接解决超时问题,但如果你的机器人并发连接较多且长期空闲,可能会占用额外服务器资源。如果请求频率不高,也可以考虑:
- 每次收到命令时重新建立连接,避免长期持有空闲连接
- 使用psycopg3的
ConnectionPool管理连接,自动处理连接的创建、复用与回收,平衡资源占用和性能
内容的提问来源于stack exchange,提问作者longedok
相关产品推荐
相关产品推荐

