Почему я получаю тайм-ауты подключения к частным службам в Azure?

Кажется, я вижу это как с моим SQL Server, так и с моим набором реплик MongoDB. Я получаю всего несколько дней, но это все равно касается меня.

Я получаю тайм-аут при попытке открыть новое соединение с удаленной системой. Это происходит даже тогда, когда удаленная система работает и отвечает. У меня есть один экземпляр SQL Server и набор из 3 системных реплик mongodb. Кажется, что это происходит довольно редко при умеренных и высоких нагрузках.

Я использую пулы соединений, и размеры должны ограничивать соединения (конечно, для каждого процесса), ни один не должен видеть более 1 000 соединений, точно так же, как и тайм-ауты при попытке соединения.

SQL-сервер - это, конечно, Windows, экземпляры mongodb находятся под Ubuntu, а клиенты представляют собой комбинацию node.js под linux и windows, а также приложений.Net 4.5.

Я нахожусь в процессе создания более устойчивой (попробуйте 3 раза до сбоя) архитектуры, точно так же проблема касается меня.

Что бы вы искали с точки зрения проблем здесь?

1 ответ

Вопрос старый, и это может быть другая корневая проблема, но, поскольку я потратил больше недели на его отслеживание, это может сэкономить кому-то время:

У меня проблема, которая представляет аналогичную ошибку. после того, как они покопались в службе технической поддержки Azure, их лучшее предположение (они не уверены) заключается в том, что пустые соединения прерываются каким-либо прокси между веб-приложениями и сервером. это происходит примерно через 4 минуты. и таким образом, и сервер, и клиент не подозревают, что это происходит. при попытке использовать соединение в этом состоянии клиент отправляет пакеты, которые никогда не попадают на сервер.

Последнее, что я слышал, это не будет изменено / исправлено. Итак, варианты предотвращения этого (в порядке здравомыслия):

  1. прервать неактивные соединения на сервере через ~3 минуты.
  2. настроить клиент на разрыв соединения, если он простаивает с отметкой ~3 минуты.
  3. убедитесь, что у вас нет свободных соединений, выполнив некоторую занятую работу на клиенте.

Ваша повторная попытка в случае сбоя соединения сработает, если она фактически создаст новое соединение, в противном случае приложение просто заставит приложение подождать дольше, прежде чем оно достигнет той же точки.

Я буду обновлять через неделю, если это действительно решит проблему навсегда.

редактирование: комбинация отключения свободных соединений на клиенте и отправки подтверждения активности с сервера каждые 2 минуты позволила решить эту проблему.

Другие вопросы по тегам