У меня есть несколько веб-сайтов ASP.NET Core на виртуальной машине Windows Server 2016, работающей в IIS / Kestrel (конфигурация обратного прокси).
Некоторые из этих веб-сайтов неактивны в течение дня. Из-за этого их пул приложений прекращается (и я хотел бы сохранить это, чтобы использовать меньше ресурсов). Проблема в том, что холодный старт длился довольно долго. Затем я настраиваю эти пулы приложений на Suspend
вместо того Terminate
после простоя.
С тех пор эти сайты не только принимают дольше для запуска в холодную погоду, но также выдает 503 секунды при холодном запуске. После запуска они работают нормально. Но первым обращением к приостановленному пулу приложений почти всегда является 503. Тело содержит сообщение типа «Служба недоступна», но переведенное (и не в UTF-8, похоже, поскольку символы отображаются неправильно). Я не уверен, пришло ли это сообщение от IIS или Kestrel.
После поиска трассировки неудачных запросов я обнаружил следующее:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/>
<EventID>0</EventID>
<Version>1</Version>
<Level>3</Level>
<Opcode>16</Opcode>
<Keywords>0x100</Keywords>
<TimeCreated SystemTime="2019-10-24T15:13:51.803Z"/>
<Correlation ActivityID="{80000C51-0003-BC00-B63F-84710C7967BB}"/>
<Execution ProcessID="13656" ThreadID="17072"/>
<Computer>[REDACTED]</Computer>
</System>
<EventData>
<Data Name="ContextId">{80000C51-0003-BC00-B63F-84710C7967BB}</Data>
<Data Name="ModuleName">AspNetCoreModuleV2</Data>
<Data Name="Notification">128</Data>
<Data Name="HttpStatus">503</Data>
<Data Name="HttpReason">Server has been shutdown</Data>
<Data Name="HttpSubStatus">0</Data>
<Data Name="ErrorCode">2147943515</Data>
<Data Name="ConfigExceptionInfo"></Data>
</EventData>
<RenderingInfo Culture="en-US">
<Opcode>MODULE_SET_RESPONSE_ERROR_STATUS</Opcode>
<Keywords>
<Keyword>RequestNotifications</Keyword>
</Keywords>
<freb:Description Data="Notification">EXECUTE_REQUEST_HANDLER</freb:Description>
<freb:Description Data="ErrorCode">A system shutdown is in progress.
(0x8007045b)</freb:Description>
</RenderingInfo>
<ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace">
<EventGuid>{002E91E3-E7AE-44AB-8E07-99230FFA6ADE}</EventGuid>
</ExtendedTracingInfo>
</Event>