Тайм-аут ADF-Postgres

Я работаю с ADF и Azure Managed Postgres. У меня была повторяющаяся проблема с поиском и действиями по копированию на основе запросов, время ожидания которых истекло примерно через 35 секунд.

Failure happened on 'Source' side. 'Type=Npgsql.NpgsqlException,Message=Exception while reading from stream,Source=Npgsql,''Type=System.IO.IOException,Message=Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.,Source=System,''Type=System.Net.Sockets.SocketException,Message=A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond,Source=System,' 

Таким образом, ошибка говорит, что это исключение Npgsql, поэтому я просмотрел их документацию и изменил строку подключения, чтобы она также принимала Timeout = 60 и CommandTimeout = 60 (внутреннее время ожидания по умолчанию равно CommandTimeout).

И запросы по-прежнему истекают через ~ 35 секунд. Может ли это быть проблемой сокета с управляемым экземпляром Azure, вызывающим тайм-аут, и он просто распространяется на npgsql?

Любая помощь будет оценена по достоинству!


person Robert Riley    schedule 13.01.2021    source источник
comment
Можете ли вы попробовать изменить строку подключения Timeout и CommandTimeout на большее значение?   -  person Leon Yue    schedule 15.01.2021
comment
Я также попытался установить Timeout = 600 и CommandTimeout = 0 (что бесконечно), и проблема не устранена. Возможно ли, что отмена вместо этого происходит с postgres на npgsql? Что-то вроде переопределения?   -  person Robert Riley    schedule 15.01.2021


Ответы (2)


Я просто хочу добавить немного точности, потому что у меня была такая же проблема (и спасибо @DeliciousMalware и @Leon_Yue):

  • Тайм-аут по умолчанию составляет 30 секунд для запросов с соединением postgres.
  • Невозможно изменить этот тайм-аут напрямую из действия поиска.
  • Единственный вариант, который что-то делает, — это добавить Timeout=600;CommandTimeout=0; к строке подключения в связанной службе (если вы, например, используете хранилище ключей) или добавить параметры в дополнительные параметры связанной службы, как на снимке экрана @DeliciousMalware.
  • Timeout — установить соединение, а CommandTimeout — время ожидания самой команды (в секундах 0 означает бесконечность)
  • Библиотека для соединения — npgsql, а другие параметры и детали, которые можно использовать, находятся здесь: https://www.npgsql.org/doc/connection-string-parameters.html

Мне было трудно найти параметры строки подключения, что они означают и какие из них существуют, поэтому я был очень рад найти этот документ. Я не нашел много документации по postgres в лазури, поэтому я подумал, что этот список параметров будет полезен для других.

person robin loche    schedule 07.04.2021

Я добавил 2 параметра, предложенных Леоном, и это решило мою проблему.

Вот скриншот параметров, добавляемых в связанную службу

Вот скриншот ошибки и завершенного запуска

person DeliciousMalware    schedule 25.01.2021