2016-07-21 7 views
0

Я вижу увеличенную загрузку процессора и http на моем .NET API (используя Nancy/OWIN).Как анализировать анализ DebugDiag для высоких CPU и очереди?

Он работает на Azure, поэтому я взял свалку памяти.

Я пытаюсь выяснить, как читать отчет DebugDiag Analysis.

Вот раздел предупреждение: enter image description here

Я предполагаю, что «62 клиентских соединений» является причиной массового обслуживания, поэтому я выкопал в этом разделе.

Есть несколько общих запросов к одному URL, глядя, как это:

Host Header MyApi:80 GET request for /companies/list HTTP Version HTTP/1.1 SSL Request True Time alive 1 day(s) 03:43:21 QueryString
Request mapped to
HTTP Request State HTR_READING_CLIENT_REQUEST Native Request State NREQ_STATE_PROCESS Client Connection State CCS_STARTUP

Но я не знаю, что это значит. Это говорит о том, что запрос все еще открыт и занимает 1 день? Они также отображаются в разделе «Запуск с».

Код работает async/wait, так что мне интересно, если я не обрабатываю отмену и т. Д. Правильно?

Может ли кто-нибудь дать мне несколько советов о том, как анализировать дамп памяти, чтобы диагностировать высокий уровень обслуживания/очереди?

Благодаря

ответ

2

Отчет говорят вам, что 62 запросов, которые работают в течение более 90 секунд на сервере, и они все еще не закончили выполнение так, что проблема точно исследовать. Время, о котором сообщается (1 день), кажется действительно высоким, хотя я не уверен, что это действительно точно (хотя я бы сказал, что видел дампы памяти, где мы видим, что запросы застряли в течение долгого времени). 62, возможно, не означает, что очередь.

В докладе также имеет раздел HTTP Context, который может сказать вам нить, на которой запрос долго работает под управлением и нажав на нить должна дать вам информацию о том, что нить на самом деле делает или то, что он застрял на.

отчеты DebugDiag также разделы, где они отображения стек вызовов каждого потока. вам, возможно, придется быстро отсканировать весь отчет и посмотреть, можно ли увидеть потоки, имеющие столбец .net, который дает указание обрабатываемого HTTP-запроса.

Если вы можете поделиться полный отчет, я могу предоставить более подробную информацию или не стесняйтесь, чтобы открыть дело с поддержкой Microsoft и кто-то должен быть в состоянии помочь.

После Глядя на Dump File

Я провел некоторое время, пытаясь отладить файл дампа, и все запросы застряли в Owin Middleware в ASP.NET. В основном этот модуль - webengine4 -__ DynamicModule_Microsoft.Owin.Host.SystemWeb.OwinHttpModule,

Это означает, что вы подключаетесь к промежуточному программному обеспечению OWIN с помощью приложения.метод использования внутри метода конфигурации класса запуска, и один из этих методов асинхронно ожидает то, что занимает много времени, чтобы выполнить ... Найденный DB

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

000> !pe 0x000000cbe3d71e18 
Exception object: 000000cbe3d71e18 
Exception type: System.Data.SqlClient.SqlException 
Message:   Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=2859; handshake=11534; [Login] initialization=0; authentication=0; [Post-Login] complete=3510; 
InnerException: System.ComponentModel.Win32Exception, Use !PrintException 000000cbe3d71ce8 to see more. 
StackTrace (generated): 
    SP    IP    Function 
    000000CB896582C0 000007FE9E4DCC82 System_Data_ni!System.Data.SqlClient.SqlInternalConnectionTds..ctor(System.Data.ProviderBase.DbConnectionPoolIdentity, System.Data.SqlClient.SqlConnectionString, System.Data.SqlClient.SqlCredential, System.Object, System.String, System.Security.SecureString, Boolean, System.Data.SqlClient.SqlConnectionString, System.Data.SqlClient.SessionData, System.Data.ProviderBase.DbConnectionPool, System.String, Boolean)+0x572 
    000000CB8965EC10 000007FE9E019480 System_Data_ni!System.Data.SqlClient.SqlConnectionFactory.CreateConnection(System.Data.Common.DbConnectionOptions, System.Data.Common.DbConnectionPoolKey, System.Object, System.Data.ProviderBase.DbConnectionPool, System.Data.Common.DbConnection, System.Data.Common.DbConnectionOptions)+0x460 
    000000CB8965ED00 000007FE9E019006 System_Data_ni!System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(System.Data.ProviderBase.DbConnectionPool, System.Data.Common.DbConnection, System.Data.Common.DbConnectionOptions, System.Data.Common.DbConnectionPoolKey, System.Data.Common.DbConnectionOptions)+0x46 
    000000CB8965ED60 000007FE9E018FB4 System_Data_ni!System.Data.ProviderBase.DbConnectionPool.CreateObject(System.Data.Common.DbConnection, System.Data.Common.DbConnectionOptions, System.Data.ProviderBase.DbConnectionInternal)+0x3c4 
    000000CB8965EDE0 000007FE9E018942 System_Data_ni!System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(System.Data.Common.DbConnection, System.Data.Common.DbConnectionOptions, System.Data.ProviderBase.DbConnectionInternal)+0x72 
    000000CB8965EE30 000007FE9E01866F System_Data_ni!System.Data.ProviderBase.DbConnectionPool.TryGetConnection(System.Data.Common.DbConnection, UInt32, Boolean, Boolean, System.Data.Common.DbConnectionOptions, System.Data.ProviderBase.DbConnectionInternal ByRef)+0x65f 
    000000CB8965EEB0 000007FE9E5A58A9 System_Data_ni!System.Data.ProviderBase.DbConnectionPool.WaitForPendingOpen()+0x159 
    000000CB9A7DE920 000007FEAA21E814 mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)+0xd34d54 
    000000CB9A7DE960 000007FEA94E9A0D mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)+0x3d 
    000000CB9A7DE990 000007FE4C714BF0 AppianMedia_XWing_Application_Web_Api_Homely!AppianMedia.XWing.Application.Web.Api.Homely.Repository.DapperRepository+<FindListingsAsync>d__50.MoveNext()+0x290 
    000000CB9A7DC2A0 000007FEAA21E814 mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)+0xd34d54 
    000000CB9A7DC2E0 000007FEA94E9A0D mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)+0x3d 
    000000CB9A7DC310 000007FEAA21E795 mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(System.Threading.Tasks.Task)+0xd34de5 
    000000CB9A7DC340 000007FE4C6DEF8F AppianMedia_XWing_Application_Web_Api_Homely!AppianMedia.XWing.Application.Web.Api.Homely.Services.Caching.Listing.ListingCache+<FindListingsForLocationsAsync>d__39.MoveNext()+0xd9f 
    000000CB9A7D9DD0 000007FEAA21E814 mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)+0xd34d54 
    000000CB9A7D9E10 000007FEA94E9A0D mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)+0x3d 
    000000CB9A7D9E40 000007FE4C6DA757 AppianMedia_XWing_Application_Web_Api_Homely!AppianMedia.XWing.Application.Web.Api.Homely.Services.Caching.Listing.ListingCache+<FindAllListingResultsAsync>d__24.MoveNext()+0x167 
    000000CB9A7D7900 000007FEAA21E814 mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)+0xd34d54 
    000000CB9A7D7940 000007FEA94E9A0D mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)+0x3d 
    000000CB9A7D7970 000007FE4CA4E50E AppianMedia_XWing_Application_Web_Api_Homely!AppianMedia.XWing.Application.Web.Api.Homely.Services.Caching.Listing.ListingCache+<GetSimilarListingIdsAsync>d__26.MoveNext()+0x26e 
    000000CB9A7D53B0 000007FEAA21E814 mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)+0xd34d54 
    000000CB9A7D53F0 000007FEA94E9A0D mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)+0x3d 
    000000CB9A7D5420 000007FE4CA46F0C AppianMedia_XWing_Application_Web_Api_Homely!AppianMedia.XWing.Application.Web.Api.Homely.Services.Caching.Listing.ListingCache+<GetListingDetailsAsync>d__25.MoveNext()+0x8bc 
    000000CB9A7D2EF0 000007FEAA21E814 mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)+0xd34d54 
    000000CB9A7D2F30 000007FEA94E9A0D mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)+0x3d 
    000000CB9A7D2F60 000007FE4CA46396 AppianMedia_XWing_Application_Web_Api_Homely!AppianMedia.XWing.Application.Web.Api.Homely.Modules.Listing.ListingModule+<DetailsAsync>d__2.MoveNext()+0x106 
    000000CB9A7D09D0 000007FEAA21E814 mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)+0xd34d54 
    000000CB9A7D0A10 000007FEA94E9A0D mscorlib_ni!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)+0x3d 
    000000CB9A7D0A40 000007FE4CBD4635 UNKNOWN!DynamicClass.CallSite.Target(System.Runtime.CompilerServices.Closure, System.Runtime.CompilerServices.CallSite, System.Object)+0x65 
    000000CB9A7D0A80 000007FE4CA45C01 AppianMedia_XWing_Application_Web_Api_Homely!AppianMedia.XWing.Application.Web.Api.Homely.Modules.Listing.ListingModule+<<-ctor>b__1_0>d.MoveNext()+0x5f1 

StackTraceString: <none> 

Если это не помогает, то вам необходимо использовать некоторые профайлеры уровне CLR (PerfView, NewRelic и т.д.) или использовать инструменты, такие как Glimpse, чтобы получить более подробную информацию или добавьте некоторую трассировку в наш код MiddleWare.

+0

благодарит за ваш ответ. Я взглянул на ваши предложения, но все еще не могу понять:/Я приложил полный отчет здесь: http://www.filedropper.com/w3wp1800151c2016-07-2103-58-45-6170708multiplerules. Цените свою помощь :) – RPM1984

+0

любые идеи/предложения? – RPM1984

+0

Ссылка сейчас не работает для меня, и я раньше не видел вашего комментария ... извините ... вы можете поделиться ею через onedrive? –

 Смежные вопросы

  • Нет связанных вопросов^_^