?tcpKeepAlive=真且为RPostgres

?tcpKeepAlive=真且为RPostgres,r,postgresql,rpostgresql,r-dbi,R,Postgresql,Rpostgresql,R Dbi,我的红移服务器的建议url附加了一个?tcpKeepAlive=true,因此看起来像 jdbc:postgresql://myserver:myport/dbname?tcpKeepAlive=true myConn <- dbConnect(dbname = "dbname", host = "myserver", port = "myport", user = "

我的红移服务器的建议url附加了一个
?tcpKeepAlive=true
,因此看起来像

jdbc:postgresql://myserver:myport/dbname?tcpKeepAlive=true
myConn <- dbConnect(dbname = "dbname",
                    host = "myserver",
                    port = "myport",
                    user = "StevieP",
                    password = "faketown101",
                    keepalives = x,
                    keepalives_idle = y,
                    keepalives_interval = z)
现在,
RPostgres::dbConnect
函数具有签名

dbConnect(dbname = NULL, host = NULL, port = NULL, password = NULL, user = NULL, ...)
dbConnect
的那个人说

-描述附加连接选项的其他名称-值对,如中所述

然而,我能看到的最接近我所寻找的连接选项是

  • keepalives
    : 控制是否使用客户端TCP keepalives。默认值为1,表示打开,但如果不需要keepalives,可以将其更改为0,表示关闭。对于通过Unix域套接字进行的连接,忽略此参数

  • keepalives\u idle
    : 控制TCP应向服务器发送keepalive消息的非活动秒数。零值使用系统默认值。对于通过Unix域套接字进行的连接,或者如果禁用了keepalives,则忽略此参数。它仅在TCP_KEEPIDLE或TCP_KEEPALIVE套接字选项可用的系统上以及Windows上受支持;在其他系统上,它没有效果

  • keepalives\u间隔
    : 控制服务器未确认的TCP keepalive消息重新传输的秒数。零值使用系统默认值。对于通过Unix域套接字进行的连接,或者如果禁用了keepalives,则忽略此参数。它仅在TCP_KEEPINTVL套接字选项可用的系统和Windows上受支持;在其他系统上,它没有效果。 记数

我不知道如何使用这些来模拟
?tcpKeepAlive=true

我想我可以做一些像

jdbc:postgresql://myserver:myport/dbname?tcpKeepAlive=true
myConn <- dbConnect(dbname = "dbname",
                    host = "myserver",
                    port = "myport",
                    user = "StevieP",
                    password = "faketown101",
                    keepalives = x,
                    keepalives_idle = y,
                    keepalives_interval = z)

myConn这似乎更像是数据库管理员的问题我猜真正的问题是:postrgresql URL中的
?tcpKeepAlive=true
keepalives
参数有什么关系?我认为这不是postgres约定,而是JDBC约定。同样,您的DBA应该能够帮助您。@StevieP您能够解决这个问题吗?我们正在尝试使用RPostgres连接到Amazon RDS,但遇到了一些问题。欢迎提供任何提示。@Sandeep:@hadley是正确的,您的DBA应该能够帮助您。使用
keepalives.*
是一种方法。IIRC,由于默认值为1,我最终删除了
keepalives
,然后设置
keepalives\u idle=1
keepalives\u idle=10
(或类似),因为我们的DBA说,他认为从使用成本来看,来自保持活动信号的流量实际上是零。