连接到第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。
造成这种差异的原因是什么?如何在C#中使用Npgsql来解决这个问题?
看着我的水晶球,我看到您的数据库服务器不在Windows上,并且psql
会话正在数据库服务器上运行。您的psql
会话通过UNIX套接字(local
连接)连接。
The documentation说(强调我的):
keepalives_count
控制在客户端与服务器的连接被视为死亡之前可能丢失的TCP Keepalive的数量。值为零使用系统默认值。对于通过Unix域套接字建立的连接,或者如果禁用了keepalive,将忽略此参数。它仅在
TCP_KEEPCNT
或等效套接字选项可用的系统上受支持;在其他系统上,它没有任何影响。
如果你通过TCP连接psql
,你也应该看到75。