pg_settings psql 和 npgsql 之间的差异
pg_settings discrepancy between psql and npgsql
连接到 pg 11 实例并执行时
select setting, source from pg_settings
where name='tcp_keepalives_interval';
我在通过 psql 连接和使用 using Npgsql;
的脚本之间得到两种不同的响应
命令行psql客户端returns
0 | default
而 Npgsql 脚本将 return
75 | default
75 匹配 net.ipv4.tcp_keepalive_intvl
但我仍然期望 0.
造成这种差异的原因是什么?我通常如何在 C# 中使用 Npgsql 来解释它?
查看我的 crystal 球,我发现您的数据库服务器不在 Windows 上并且 psql
会话在数据库服务器上 运行。您的 psql
会话通过 UNIX 套接字连接(local
连接)。
The documentation 说(强调我的):
keepalives_count
Controls the number of TCP keepalives that can be lost before the client's connection to the server is considered dead. A value of zero uses the system default. This parameter is ignored for connections made via a Unix-domain socket, or if keepalives are disabled. It is only supported on systems where TCP_KEEPCNT
or an equivalent socket option is available; on other systems, it has no effect.
如果您通过 TCP 与 psql
连接,您也应该看到 75。
连接到 pg 11 实例并执行时
select setting, source from pg_settings
where name='tcp_keepalives_interval';
我在通过 psql 连接和使用 using Npgsql;
命令行psql客户端returns
0 | default
而 Npgsql 脚本将 return
75 | default
75 匹配 net.ipv4.tcp_keepalive_intvl
但我仍然期望 0.
造成这种差异的原因是什么?我通常如何在 C# 中使用 Npgsql 来解释它?
查看我的 crystal 球,我发现您的数据库服务器不在 Windows 上并且 psql
会话在数据库服务器上 运行。您的 psql
会话通过 UNIX 套接字连接(local
连接)。
The documentation 说(强调我的):
keepalives_count
Controls the number of TCP keepalives that can be lost before the client's connection to the server is considered dead. A value of zero uses the system default. This parameter is ignored for connections made via a Unix-domain socket, or if keepalives are disabled. It is only supported on systems where
TCP_KEEPCNT
or an equivalent socket option is available; on other systems, it has no effect.
如果您通过 TCP 与 psql
连接,您也应该看到 75。