Загадочное исключение с .net Core в службе приложений Azure - PullRequest
0 голосов
/ 30 октября 2018

В прошлом году у меня было приложение, размещенное в службе приложений с подключенной базой данных SQL Azure. Буквально на прошлой неделе у нас были многочисленные проблемы с пакетными ответами, что показало некоторую хрупкость в нашем асинхронном коде. Не было нового развернутого кода. Я подозреваю, что это связано с тем, что одна часть нашего приложения, вероятно, наша БД, остается нераспределенной до обработки запроса.

В нашем стеке используется приложение ASP.Net Core 2.0 на Kestrel, которое перемещает пользователя на страницу Razor, которая затем создает соединение через веб-сокет, используемое для (по сути) игры. Это монолит; все это находится в одном проекте, развернутом в одном экземпляре.

Последняя проблема связана с этой ошибкой:

System.NullReferenceException: Object reference not set to an instance of an object.
  at Microsoft.AspNetCore.Routing.Tree.TreeRouter.<RouteAsync>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at Microsoft.AspNetCore.Routing.RouteCollection.<RouteAsync>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at Microsoft.AspNetCore.Builder.RouterMiddleware.<Invoke>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.<Invoke>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>d__6.MoveNext()

Наша служба приложений оказалась в цикле перезапуска с единственным исключением, которое повторяется. Ранее в журналах было необоснованное количество запросов, обрабатываемых в течение 200 мс, что заставляет меня думать, что они удерживались и обрабатывались практически одновременно; времена не имеют смысла иначе.

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

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

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