Есть ли у кого-нибудь предложения о том, что может предотвратить такое поведение? Имеет ли это какое-либо отношение к настройкам поддержания активности/TCP? В pg_state_activity я вижу то же самое соединение, но оно находится в состоянии ожидания.
Общее описание ситуации
- Использование библиотеки npgsql на C# для внешнего сервера Postgresql
- Использование длительного соединения (настройка прослушивания, ожидания)
- Выполнение запроса на прослушивание входящих уведомлений и уведомлений
- Ожидание (с токеном отмены) до получения сообщения (при подключении никаких других действий не происходит).
Я был бы признателен за любые идеи, которые люди имеют относительно этой проблемы, у кого-нибудь есть идеи, как я могу заставить мою ситуацию работать? Вот фрагмент кода, который является виновником: https://gist.github.com/phr34k/3a59af15 ... 2271052a6a
Изменить
В ответ на ответ jjanes я пошел на дальнейшее расследование. Когда я смотрю в pg_state_activity, он показывает соединение в состоянии ожидания. Когда я перекрестно ссылаюсь на номер порта клиента с помощью netstat -t на сервере, по крайней мере, я не вижу соединения в списке.
Честно говоря, перед запуском netstat -t я пытался использовать pg_notify, поэтому пока не уверен, можно ли запустить pg_notify не привел к его завершению. Однако странно то, что соединение продолжает отображаться в pg_state_activity, как будто Postgres даже не осознавал, что соединение было закрыто?
Я так думаю имеет какое-то отношение к брандмауэрам и незанятым соединениям. Кто-нибудь знает, есть ли что-нибудь по умолчанию в стеке Ubuntu/digital Ocean, которое через некоторое время уничтожает соединения?
Подробнее здесь: https://stackoverflow.com/questions/603 ... en-timeout
Мобильная версия