当连接到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解释这种差异?

最佳答案

查看我的水晶球,我发现您的数据库服务器不在Windows上,而psql会话正在数据库服务器上运行。您的psql会话通过UNIX套接字连接(alocal连接)。
The documentation说(强调我的):
keepalives_count
控制在客户端与服务器的连接被认为已断开之前可以丢失的TCP keepalives的数量。值为零使用系统默认值。对于通过Unix域套接字建立的连接,或禁用keepalives时,将忽略此参数。它仅在TCP_KEEPCNT或等效套接字选项可用的系统上受支持;在其他系统上,它不起作用。
如果您通过TCP连接到psql,您也应该看到75。

关于postgresql - pg_settings psql和npgsql之间的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54771398/

10-16 17:24