libpq
底层PostgreSQL客户端库,可以keepalives
选择启用TCP keepalive。
看起来PgAdmin-III不允许您直接指定任意连接参数,但是有一种解决方法。
当您查看PgAdmin-III中的连接配置时,将看到“服务”选项。这是指连接服务文件。要使用它,请创建~/.pg_service.conf
内容如下的:
[myherokudb]
user=myusername
keepalives=1
connect_timeout=20
keepalives_idle=10
从PgAdmin-III连接时myherokudb
,在service
字段中输入。
这将导致PgAdmin-III使用服务文件中指定的连接参数,包括启用keepalive。
(如果您使用的是Windows,则服务文件可能位于其他位置;请参阅文档)。
由于没有环境变量libpq
来控制keepalive,因此您不能以这种方式进行设置,必须使用服务文件。
在PgAdmin-III中添加对其他连接参数的支持,或者在连接选项中选择一个复选框来控制keepalives参数,应该是很简单的。我想知道戴夫是否理解您要重新报价以资助这项工作的要求。
更新:在PGSYSCONFDIR
环境变量中指定的位置查找服务文件。如果未设置,则默认为特定于平台的位置,Windows似乎未正确记录该位置。我将提交一个文档补丁。的文档.pgpass
%APPDATA%\postgresql\pgpass.conf
似乎显示了其路径,因此~/.pg_service.conf
应该%APPDATA%\postgresql\pg_service.conf
...但似乎并非如此。
实际上,正确的路径是:
%APPDATA%\postgresql\.pg_service.conf
所以:
- 开始->运行
- `%APPDATA%
- 创建目录“ postgresql”(如果不存在)
- 使用上面给出的内容将文件“ .pg_service.conf”创建为文本文件(请参阅以下注意事项,重新命名文件)
- 在PgAdmin-III中,在主机名中输入“ localhost”,在服务字段中输入服务名称。
我在Windows上进行了测试,发现无法host
在Windows上将PgAdmin-III中的字段留空。PgAdmin-III似乎会使用连接对话框中指定的内容覆盖服务文件中指定的任何主机。因此,您不应host
在服务文件中包含密钥。(我将报告一个错误)。
在Windows中关闭“隐藏已知文件类型的文件扩展名”功能,因此您不会意外地调用它.pg_service.conf.txt
。如果不确定其名称是否正确,请在Windows资源管理器的列表视图中检查“类型”列;否则,请单击确定。它会读取“文本文档”,如果它的正确命名.pg_service.conf.txt
,并且CONF File
如果它的正确命名.pg_service.conf
。如果您在重命名时遇到问题,请关闭“隐藏已知文件类型的文件扩展名”,或使用明智的文本编辑器(如notepad ++)来创建自己喜欢的文件名。
注意文件名中的前导句点(点)。是的,这与有所不同pgpass.conf
,是的,这很令人讨厌,即将出现错误。