Azure, закрывающая неактивные сетевые соединения

Я запускаю собственное клиент-серверное приложение на единственном Windows Server экземпляра 2k8R2 голубой VM.

Клиент очень зависит от соединения с сервером. Однако, если я провожу несколько минут без какого-либо действия, что-то на конце Azure насильственно закрывает соединение (насколько я могу сказать от журналов). Я не положителен, если это - функция самой лазури или окон.

За исключением реализации своего рода функциональности проверки активности (который я не могу, потому что программное обеспечение является собственным), там так или иначе, я могу расширить этот тайм-аут?

Я видел несколько ссылок на изменение idletimeout для loadbalanced ситуаций, но это - просто единственный экземпляр.

заранее спасибо!

5
задан 23 January 2015 в 01:10
2 ответа

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

Настраиваемый тайм-аут простоя для Azure Load Balancer

Однако это хорошая практика как для со стороны инфраструктуры и приложений для поддержки активности. Это избавит вас от головной боли в будущем.

Отредактируйте, чтобы добавить, что Azure теперь поддерживает Сброс TCP при неактивных соединениях

8
ответ дан 3 December 2019 в 01:04

Параметры TCP для виртуальных машин Azure

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

Это обычное поведение NAT, которое может вызвать проблемы со связью в приложениях на основе TCP. которые ожидают, что сокет будет обслуживаться по истечении периода ожидания. Для сеансов в состоянии установленного соединения необходимо учитывать два параметра тайм-аута простоя:

входящий через балансировщик нагрузки Azure. По умолчанию это время ожидания составляет 4 минуты, и его можно изменить до 30 минут. исходящий с использованием SNAT (Source NAT). Этот тайм-аут установлен на 4 минуты и не может быть изменен. Чтобы гарантировать, что соединения не будут потеряны сверх лимита тайм-аута, вы должны убедиться, что ваше приложение поддерживает сеанс в активном состоянии или вы можете настроить соответствующую операционную систему. Используемые настройки различны для систем Linux и Windows, как показано ниже.

Для Linux следует изменить указанные ниже переменные ядра. net.ipv4.tcp_keepalive_time = 120 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 8

Для Windows следует изменить значения реестра, указанные ниже. KeepAliveInterval = 30 KeepAliveTime = 120 TcpMaxDataRetransmissions = 8

Приведенные выше настройки гарантируют, что пакет проверки активности отправляется через 2 минуты (120 секунд) простоя, а затем отправляется каждые 30 секунд. И если 8 из этих пакетов терпят неудачу, сеанс прерывается.

Источник: https://github.com/wbuchwalter/azure-content/blob/master/includes/guidance-tcp-session-timeout-include .md

4
ответ дан 3 December 2019 в 01:04

Теги

Похожие вопросы