.Net Core Web Apps иногда перестают работать должным образом до повторного развертывания - PullRequest
0 голосов
/ 14 мая 2019

Это уже второй раз, когда я видел такое поведение, и я не уверен, как с этим справиться.

У меня есть веб-система, основанная на .Net Core.В настоящее время 2.0 (я знаю, мне нужно обновить это).

  • Одна служба приложений
  • Два веб-приложения на основе .Net Core:
    • В основном веб-APIКонечные точки REST
    • У одного также есть несколько очень простых компонентов внешнего интерфейса MVC (внутренний портал управления, который использует JS / JQuery для запроса некоторых конечных точек REST для предоставления некоторых параметров статистики и диагностики)
    • Одно веб-приложение имеет два веб-задания, запускаемых очередью
    • Оба получают доступ к одной и той же базе данных SQL Azure через EF Core.
    • Оба используют NLog для ведения журнала
  • Aтретье веб-приложение предназначено только для внешнего интерфейса Angular, который обрабатывает основной пользовательский интерфейс и никогда не доставляет реальных проблем (выполняет вызовы к одной из конечных точек веб-API и отображает полученные данные ... не имеет большой логики)

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

Все построено на сервере сборки (город команды), и артефакты сборки также развернуты наAzure через отдельные конфигурации сборки на одном и том же сервере Team City.

Как правило, это работает довольно давно (более года).однако пару месяцев назад одно из этих веб-приложений (отчетное) начало не отвечать на запросы.Не все запросы (например, основные вещи, такие как «вход в систему», который просто генерирует токен JWT, были в порядке), но все, что пыталось получить много данных, не отвечало.

Перезапуск веб-приложения не сделал 'Т помочь.Включение дополнительного ведения журнала не помогло, но, похоже, точно определило, что оно достигает определенной строки кода и просто ... останавливает .Это было очень странно, и это не было чем-то особенно обременительным.

В конце я добавил еще больше логов и, конечно, пришлось заново развернуть, чтобы эти изменения произошли ... и тогда проблема просто исчезла полностью.Я действительно не добавил ничего, кроме нескольких операторов логирования (я довольно дотошен в этом, и у меня есть история сборки / развертывания, доступная через Team City / VCS Labeling (Git)).

Сегодня я закончилс аналогичными симптомами в прочем .Net Core Web приложении.казалось, что он просто достигает определенного места в коде, тогда останавливается .(насколько я мог судить по логам).После попытки перезапустить приложение (и всю службу приложений, охватывающую оба приложения), и оно не дало никакого эффекта, я просто заново развернул сайт без каких-либо изменений , и он начал работать.

Что может быть причиной такого поведения?Кажется, что иногда .Net Core Web Apps просто попадают в какое-то странное состояние и перестают правильно реагировать.Они не бросают исключения, просто ... stop .И перезапуск веб-приложений, похоже, не помогает, что особенно странно.Это как если бы оно сохраняло больше состояния, чем вы ожидаете между перезапусками.

Я собираюсь попытаться расставить приоритеты для обновления до .Net Core 2.2 или аналогичного в ближайшее время, но подумал, видел ли это кто-нибудь, конечно же, я не буду счастлив, если это произойдет снова после обновления.

1 Ответ

0 голосов
/ 15 мая 2019

Причину внезапной неработоспособности можно отследить, только просмотрев журналы сервера и, при необходимости, собирая дампы памяти, может определенно добавить много полезного.

Но иногда да, основное приложение Asp.Netбыл недоступен в течение некоторого времени после изменения инфраструктуры платформы.Эта проблема связана с взаимодействием между функцией предварительной загрузки сайта и модулем ядра Asp.Net в конвейере IIS.

Это отслеживается как https://github.com/aspnet/AspNetCoreModulowine/issues/260 для ядра Asp.Net

Просто чтобы посмотреть, поможет ли это, поместите следующий Applicationhost.xdt в папку D: \ Home \ Site.

<?xml version="1.0"?>
 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.applicationHost>
    <sites>
    <site>
      <application xdt:Locator="Match(applicationPool)" xdt:Transform="SetAttributes(preloadEnabled)"
            applicationPool="wwwsilkroadcom" preloadEnabled="false"/>
    </site>
    </sites>
  </system.applicationHost>
</configuration>
...