Внезапно высокий процессор на Windows Server 2012 R2

У нас есть простое веб-приложение ASP.NET (ASP.NET 2.0) на производстве с 2 веб-серверами, и каждый веб-сервер имеет 64 ГБ ОЗУ и 32 ядра. Производственный сайт иногда внезапно повышает производительность процессора до 90-100% на обоих серверах (offcourse only w3wp.exe). Кроме того, мы обнаружили, что pagefile.sys также стал слишком большим (когда-то было 70 ГБ +). Мы взяли несколько дампов процесса w3wp.exe и нашли интересные результаты. Например, мы нашли поток, который занимает 22 минуты, чтобы просто выполнить,

Thread 2840
General Operation Info 
Type   Unknown Operation 
Dumps present   All dumps 
Elapsed Time   (unknown) 

Thread Info 
Entry point   mscorwks!Thread::intermediateThreadProc 
System ID   2840 (0xB18) 
Create time   21/01/2018 10:55:34 


All functions in this operation      (excludes boiler-plate functions)
System.Security.CodeAccessSecurityEngine.Assert(System.Security.CodeAccessPermission, System.Threading.StackCrawlMark ByRef) 
System.Security.CodeAccessPermission.Assert() 
System.Security.PermissionToken.FindToken(System.Type) 
System.Security.PermissionSet.RemovePermission(System.Type) 
System.Security.PermissionSet.CopyWithNoIdentityPermissions() 
System.Security.CodeAccessSecurityEngine.ReflectionTargetDemandHelper(Int32, System.Security.PermissionSet, System.Threading.CompressedStack) 

System.Security.CodeAccessSecurityEngine.Assert(System.Security.CodeAccessPermission, System.Threading.StackCrawlMark ByRef) 
System.Security.CodeAccessPermission.Assert() 
System.Security.PermissionToken.FindToken(System.Type) 
System.Security.PermissionSet.RemovePermission(System.Type) 
System.Security.PermissionSet.CopyWithNoIdentityPermissions() 
System.Security.CodeAccessSecurityEngine.ReflectionTargetDemandHelper(Int32, System.Security.PermissionSet, System.Threading.CompressedStack) 

User Time     00:22:42.359 
Kernel time   00:01:59.765 

Мой вопрос заключается в том, почему CodeAccessSecurityEngine занимает 22 минуты для выполнения?

Мы нашли как минимум 48 потоков в дампах, которые используют CodeAccessSecurityEngine и занимают много времени. Еще несколько примеров,

Thread 8092
General Operation Info 
Type   Unknown Operation 
Dumps present   All dumps 
Elapsed Time   (unknown) 

Thread Info 
Entry point   mscorwks!Thread::intermediateThreadProc 
System ID   8092 (0x1F9C) 
Create time   21/01/2018 10:25:40 


System.String.InternalSubString(Int32, Int32, Boolean) 
System.RuntimeType.SplitName(System.String, System.String ByRef, System.String ByRef) 
System.RuntimeType.GetInterface(System.String, Boolean) 
System.Security.PermissionToken.FindToken(System.Type) 
System.Security.PermissionSet.RemovePermission(System.Type) 
System.Security.PermissionSet.CopyWithNoIdentityPermissions() 
System.Security.CodeAccessSecurityEngine.ReflectionTargetDemandHelper(Int32, System.Security.PermissionSet, System.Threading.CompressedStack) 

User Time   00:26:49.734 
Kernel time   00:02:38.296 

-------------------------------------------------------------------------------

Thread 2360
General Operation Info 
Type   Unknown Operation 
Dumps present   All dumps 
Elapsed Time   (unknown) 

Thread Info 
Entry point   mscorwks!Thread::intermediateThreadProc 
System ID   2360 (0x938) 
Create time   21/01/2018 10:47:53 

System.Collections.Generic.List`1[[System.__Canon, mscorlib]].set_Capacity(Int32) 
System.Collections.Generic.List`1[[System.__Canon, mscorlib]].EnsureCapacity(Int32) 
System.Collections.Generic.List`1[[System.__Canon, mscorlib]].Add(System.__Canon) 
System.RuntimeType.GetMethodCandidates(System.String, System.Reflection.BindingFlags, System.Reflection.CallingConventions, System.Type[], Boolean) 
System.RuntimeType.GetMethodImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[]) 
System.Security.PermissionToken.FindToken(System.Type) 
System.Security.PermissionSet.RemovePermission(System.Type) 
System.Security.PermissionSet.CopyWithNoIdentityPermissions() 
System.Security.CodeAccessSecurityEngine.ReflectionTargetDemandHelper(Int32, System.Security.PermissionSet, System.Threading.CompressedStack) 

User Time   00:25:37.671 
Kernel time   00:02:29.953 

------------------------------------------------------------------------------- 

Thread 7008
General Operation Info 
Type   Unknown Operation 
Dumps present   All dumps 
Elapsed Time   (unknown) 

Thread Info 
Entry point   mscorwks!Thread::intermediateThreadProc 
System ID   7008 (0x1B60) 
Create time   21/01/2018 10:54:20 

System.Reflection.MethodBase.CheckArguments(System.Object[], System.Reflection.Binder, System.Reflection.BindingFlags, System.Globalization.CultureInfo, System.Signature) 
System.Reflection.RuntimeConstructorInfo.Invoke(System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo) 
System.RuntimeType.CreateInstanceImpl(System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[]) 
System.Security.PermissionSet.AddPermission(System.Security.IPermission) 
System.Security.CodeAccessSecurityEngine.ReflectionTargetDemandHelper(Int32, System.Security.PermissionSet, System.Threading.CompressedStack) 


User Time   00:23:01.656 
Kernel time   00:02:04.625 
-------------------------------------------------------------------------------

Thread 5584
General Operation Info 
Type   Unknown Operation 
Dumps present   All dumps 
Elapsed Time   (unknown) 


Thread Info 
Entry point   mscorwks!Thread::intermediateThreadProc 
System ID   5584 (0x15D0) 
Create time   21/01/2018 10:53:13 


System.Security.CodeAccessSecurityEngine.ReflectionTargetDemandHelper(Int32, System.Security.PermissionSet, System.Threading.CompressedStack) 

User Time   00:23:40.421 
Kernel time   00:02:08.296 

Дампы были взяты и проанализированы с помощью диагностики отладки, как показано здесь https://docs.microsoft.com/en-us/iis/troubleshoot/performance-issues/troubleshooting-high-cpu-in-an-iis-7x-application-pool устранение неполадок-high-cpu-in-an-iis-7x-application-pool

Является ли CodeAccessSecurityEngine действительно виновником или чем-то еще?

0 ответов

Другие вопросы по тегам