Почему я получаю тайм-ауты подключения к частным службам в 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 минуты. и таким образом, и сервер, и клиент не подозревают, что это происходит. при попытке использовать соединение в этом состоянии клиент отправляет пакеты, которые никогда не попадают на сервер.
Последнее, что я слышал, это не будет изменено / исправлено. Итак, варианты предотвращения этого (в порядке здравомыслия):
- прервать неактивные соединения на сервере через ~3 минуты.
- настроить клиент на разрыв соединения, если он простаивает с отметкой ~3 минуты.
- убедитесь, что у вас нет свободных соединений, выполнив некоторую занятую работу на клиенте.
Ваша повторная попытка в случае сбоя соединения сработает, если она фактически создаст новое соединение, в противном случае приложение просто заставит приложение подождать дольше, прежде чем оно достигнет той же точки.
Я буду обновлять через неделю, если это действительно решит проблему навсегда.
редактирование: комбинация отключения свободных соединений на клиенте и отправки подтверждения активности с сервера каждые 2 минуты позволила решить эту проблему.