Я использую балансировщик нагрузки Alibaba Cloud SLB уже более 5 лет, и использую его с первой внутренней бета-версии Alibaba Cloud, а после развертывания произошла следующая ошибка:
Ошибки возникают периодически, после первоначальной загрузки ошибки шлюза 502 не появляется, после минуты ожидания ошибка появляется в контейнере Windows Server IIS ASP.NET сайте.
Нажмите IIS с сервера, чтобы открыть браузер, можно нормально просматривать, проблемы с балансировкой нагрузки SLB, это первый раз, когда я с этим сталкиваюсь.
Решение:
Проблема в основном проявляется в настройках «Метод проверки здоровья», стандартные настройки следующие:
Проверка здоровья бэкенда запрашивается в Headway, и если соответствующий код статуса возвращает 2xx или 3xx, сервер считается нормальным.
Мы пытались сделать запрос на заголовок тремя способами: во-первых, я напрямую запустил локальный проект и протестировал его локально.
Тест 1:
Используйте тест почтальона, как показано ниже:
Возвращаясь к состоянию 404 Not Found, на самом деле здесь мы знаем, что стало причиной.
Тест 2:
Используйте тестирование на завитки, как показано ниже:
C:\Users\itsvse>curl -i -X HEAD http://localhost:60155/
Warning: Setting custom HTTP method to HEAD with -X/--request may not work the
Warning: way you want. Consider using -I/--head instead. HTTP/1.1 404 Не найден
Cache-Control: private
Content-Length: 4432
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
X-SourceFiles: =?UTF-8?B?QzpccHJvamVjdFxteVxDb2RlU2hhcmluZ1xDb2RlU2hhcmluZy5XZWJVSVxIb21lXEVycm9yNDA0?=
X-Powered-By: ASP.NET
Date: Tue, 13 Aug 2019 03:53:04 GMT
curl: (56) Recv failure: Connection was reset
Также возвращается статус 404.
Тест 3:
На этот раз мы протестировали непосредственно на официальном сервере, через тест закрутки в PowerShell, как показано на рисунке ниже:
Видно, что та же страница запрашивается через заголовок,Иногда возвращаются404статус-код, иногда возвращается200Код статуса, тем самым подтверждая прерывистые ошибки 502, с которыми мы столкнулись в начале.
Почему asp.net периодически возвращают статусные коды 404 и 200?
Поскольку на нашей главной странице есть кэш, когда пользователь использует метод get для запроса главной страницы, страница успешно кэшируется, а head and get всегда возвращает кэшированную страницу, а также вернёт код ответа 200, если после истечения кэша никто из пользователей не делает запрос на метод get, только запрос на метод head через команду, возникает ошибка 404. По оценкам, немногие столкнутся с такой проблемой.
Решение — проверить все коды статуса ответа в режиме проверки здоровья, как показано на рисунке ниже:
Как устранить аномалии при проверке здоровья на уровне 7 при прослушивании (HTTP/HTTPS):Вход по гиперссылке виден.
(Конец)
|