Използвам Alibaba Cloud SLB load balancer повече от 5 години и го използвам от първоначалната вътрешна бета версия на Alibaba Cloud, а след внедряването възникна следната грешка:
Грешките се появяват периодично, след първоначално стартиране, няма грешка на 502 gateway, след като изчакаш минута, грешката се появява, контейнерът на Windows Server IIS ASP.NET уебсайта.
Кликни на IIS от сървъра, за да отвориш браузъра, можеш да разглеждаш нормално, SLB балансира натоварването с косвени проблеми, това е първият път, когато се сблъсквам с това.
Решение:
Проблемът се появява основно в настройките "Health Check Method", като по подразбиране са следните:
Проверката на здравето на бекенда се иска в началото и ако съответният статус върне 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:
Този път тествахме директно на официалния сървър, чрез теста за curl под PowerShell, както е показано на фигурата по-долу:
Виждате, че същата страница се иска през заглавието,Понякога се връщат404статус код, понякога връщан200Статус код, потвърждавайки се прекъсващите 502 грешки, които срещнахме в началото.
Какво причинява asp.net периодично връщане на статусни кодове 404 и 200?
Тъй като нашата начална страница има кеш, когато потребителят използва метода get, за да поиска началната страница, страницата ще бъде успешно кеширана, след което head и get винаги ще върнат кешираната страница, и също така ще върнат 200 отговорен код; ако след изтичането на кеша никой потребител не направи заявка за get метод, а само head method заявка чрез командата, ще възникне грешка 404. Оценява се, че малко хора ще се сблъскат с такъв проблем.
Решението е да се проверят всички кодове за статус на отговора в режима на здравна проверка, както е показано на фигурата по-долу:
Как да диагностицирам аномалии при проверка на здравето при Layer 7 Listening (HTTP/HTTPS):Входът към хиперлинк е видим.
(Край)
|