Ошибка сервера балансировки нагрузки GCP 502 и "backend_connection_closed_before_data_sent_to_client" IIS 10
У меня есть балансировщик нагрузки GCP с 4 веб-серверами IIS 10. Спорадически это идет с ошибкой 502-сервера. В журналах это показывает, что это из-за backend_connection_closed_before_data_sent_to_client. Я прочитал статью https://cloud.google.com/compute/docs/load-balancing/http/ и там говорится, что тайм-аут активности keepalive должен быть установлен равным 620 секундам для nginx и apache. Как мне сделать то же самое в IIS 10.
2 ответа
Разобрался с этим после поднятия тикета google cloud team. Я помещаю это здесь, чтобы другие могли извлечь выгоду.
Шаг 1. Установите время ожидания в Google Cloud Load Balancer
В балансировщике нагрузки облака Google есть две настройки тайм-аута.
- Тайм-аут и
- Тайм-аут истощения соединения.
Обе вышеуказанные настройки должны быть одинаковыми. В нашем случае существует несколько долго выполняющихся запросов, и оно установлено на 1800 секунд.
Шаг 2: Установите время ожидания соединения в IIS на 20 секунд больше, чем настройка балансировщика нагрузки
В разделе "Имя сайта IIS" перейдите в раздел "Дополнительные настройки", а затем установите значение времени ожидания подключения на 20 секунд больше, чем время ожидания балансировщика нагрузки. В моем случае 1820.
Идея состоит в том, что IIS-соединение не должно превышать время ожидания перед балансировщиком нагрузки. Если время ожидания истекло, это может привести к ошибке backend_connection_closed_before_data_sent_to_client.
Вы можете установить это в web.config как атрибут времени ожидания выполнения в http runtime по умолчанию, когда вы устанавливаете keep alive, он устанавливает время в 120 секунд. Если все еще не работает, то, возможно, между вашим процессом ответа на запрос есть прокси-сервер. Вы должны проверить тайм-аут этого прокси-сервера.
Я столкнулся с тем же сценарием в gcp, и я установил все на уровне балансировки нагрузки, но не работал. Затем я обнаружил, что между нашими процессами был прокси-сервер. Дайте мне знать, если вы можете рассказать более подробно