pg_settings psql和npgsql之间的差异

时间:2019-02-19 17:00:34

标签: postgresql psql npgsql

连接到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#中普遍解决这种差异?

1 个答案:

答案 0 :(得分:0)

仔细研究一下,我发现您的数据库服务器不在Windows上,并且psql会话正在数据库服务器上运行。您的psql会话是通过UNIX套接字(local连接)连接的。

The documentation说(强调我):

  

keepalives_count

     

控制在客户端与服务器的连接被视为无效之前可能丢失的TCP keepalive数量。零值使用系统默认值。 对于通过Unix域套接字建立的连接,或者如果禁用了保持连接,则忽略此参数。仅在TCP_KEEPCNT或等效套接字选项可用的系统上受支持;在其他系统上,则无效。

如果您通过TCP与psql连接,那么您也应该看到75。