WCF IIS托管服务启动时变慢

时间:2019-04-04 06:43:06

标签: c# rest wcf iis startup

我在IIS中托管了WCF服务。 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

这里要花些时间吗?我可以做些什么来改善这一点?

0 个答案:

没有答案