Служба размещения WCF IIS медленная при запуске - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть служба WCF, размещенная в IIS.После iisreset, когда я отправил первый запрос, сервису требуется 4-5 минут, чтобы вернуть ответ.К сожалению, время запуска (даже одноразовое) для меня неприемлемо.Большая часть времени находится внутри конструктора ServiceHost.Я попытался проанализировать реальные методы, используя время, используя YourKit.Оказывается, некоторые из внутренних методов CLR требуют времени.Я переопределил ServiceHostFactory и у меня есть некоторый пользовательский код, который я вызываю ПОСЛЕ вызова конструктора ServiceHost.

Я прикрепил вывод из YourKit.Первый столбец - это имя метода, за которым следует время.

System.ServiceModel.ServiceHost..ctor(Type, Uri[])  143125  14
System.ServiceModel.ServiceHostBase.InitializeDescription(UriSchemeKeyedCollection) 143078  15
System.ServiceModel.ServiceHost.CreateDescription(IDictionary<String,System.ServiceModel.Description.ContractDescription>&) 143062  16
System.ServiceModel.Description.ContractDescription.GetContract(Type, Type) 143000  17
System.ServiceModel.Description.TypeLoader.LoadContractDescriptionHelper(Type, Type, Object)    143000  18
System.ServiceModel.Description.TypeLoader.AddBehaviors(ContractDescription, Type, Boolean, TypeLoader/ContractReflectionInfo)  142546  19
System.ServiceModel.Description.TypeLoader.ApplyServiceInheritance<IBehavior,TBehaviorCollection>(Type, TBehaviorCollection, TypeLoader/ServiceInheritanceCallback<IBehavior,TBehaviorCollection>)  142531  20
System.ServiceModel.Description.TypeLoader.AddBehaviorsAtOneScope<IBehavior,TBehaviorCollection>(Type, TBehaviorCollection, TypeLoader/ServiceInheritanceCallback<IBehavior,TBehaviorCollection>)   142531  21
System.ServiceModel.Description.TypeLoader/c__DisplayClass23_0.<AddBehaviors>b__0(Type, KeyedByTypeCollection<System.ServiceModel.Description.IOperationBehavior>)  142531  22
System.ServiceModel.Description.TypeLoader.GetIOperationBehaviorAttributesFromType(OperationDescription, Type, Type)    142515  23
System.RuntimeType.GetInterfaceMap(Type)    142296  24
System.RuntimeType.GetMethodBase(RuntimeType, RuntimeMethodHandleInternal)  97375   25
System.RuntimeType/RuntimeTypeCache/MemberInfoCache.AddMethod(RuntimeType, RuntimeMethodHandleInternal, RuntimeType/RuntimeTypeCache/CacheType) 95921   26
System.RuntimeType/RuntimeTypeCache/MemberInfoCache.Insert(T[]&, String, RuntimeType/MemberListType)    93812   27
System.RuntimeType/RuntimeTypeCache/MemberInfoCache.MergeWithGlobalList(T[])    77625   28
System.Reflection.RuntimeMethodInfo.CacheEquals(Object) 7734    29

Что здесь занимает время?Что я могу сделать, чтобы улучшить это?

...