连接到pg 11实例并执行时
select setting, source from pg_settings
where name='tcp_keepalives_interval';
在通过psql和带有using Npgsql;
的脚本进行连接之间,我得到了两种不同的响应
命令行psql客户端返回
0 | default
而Npgsql脚本将返回
75 | default
75个匹配net.ipv4.tcp_keepalive_intvl
,但我仍然希望得到0。
造成这种差异的原因是什么?我如何使用Npgsql在C#中普遍解决这种差异?
答案 0 :(得分:0)
仔细研究一下,我发现您的数据库服务器不在Windows上,并且psql
会话正在数据库服务器上运行。您的psql
会话是通过UNIX套接字(local
连接)连接的。
The documentation说(强调我):
keepalives_count
控制在客户端与服务器的连接被视为无效之前可能丢失的TCP keepalive数量。零值使用系统默认值。 对于通过Unix域套接字建立的连接,或者如果禁用了保持连接,则忽略此参数。仅在
TCP_KEEPCNT
或等效套接字选项可用的系统上受支持;在其他系统上,则无效。
如果您通过TCP与psql
连接,那么您也应该看到75。