Расхождение pg_settings между psql и npgsql - PullRequest
0 голосов
/ 19 февраля 2019

При подключении к экземпляру 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.

В чем причина этого расхождения икак я могу объяснить это вообще в C # с Npgsql?

1 Ответ

0 голосов
/ 19 февраля 2019

Глядя в свой хрустальный шар, я вижу, что ваш сервер баз данных не работает под Windows, и на сервере баз данных запущен сеанс psql.Ваш psql сеанс подключен через сокеты UNIX (local соединение).

В документации написано (выделено мое):

keepalives_count

Управляет количеством сообщений поддержки активности TCP, которые могут быть потеряны до того, как соединение клиента с сервером будет считаться прерванным.Нулевое значение использует системное значение по умолчанию. Этот параметр игнорируется для соединений, сделанных через сокет домена Unix, или если keepalive отключены. Он поддерживается только в системах, где TCP_KEEPCNT или эквивалентная опция сокета доступна;в других системах это не имеет никакого эффекта.

Если вы подключитесь к psql через TCP, вы также должны увидеть 75.

...