WCF在一段时间未调用后,需要花费一些时间来继续呼叫

问题描述

|| 我开发了WCF REST Api,它使用NHibernate作为持久层。我当前使用的是Per-Session服务,但已阅读到Per-Call服务是进行类似操作的方式。 我不喜欢有两件事(可能非常相关),我希望删除它。 首次调用api时,大约需要20秒才能响应,这可能意味着它正在加载库并实例化类。可以在打任何电话之前这样做吗?我在ServiceContract实现类上已经有一个静态构造函数,但是并没有减少它的加载时间。 在随后的通话中,如果我停止拨打该服务约10分钟,则通话时间将从1秒变为超过20秒。这是我最大的担忧,因为客户端必须具有30秒的超时时间,对于用户来说,这可能会使应用程序崩溃。 我该如何改善?您有什么技巧可以改善这些服务的性能吗?     

解决方法

似乎很明显有IIS应用程序池回收的情况,因此可以合理地假设您在IIS中托管此WCF服务。 几种选择: 在IIS外部托管服务(WCF可作为独立的Windows服务托管) 调整应用程序池回收频率     ,尝试记录您的Application_Start()和Application_End()以显示应用程序启动和停止的时间。如果这是您的问题,这可以给您一个想法。 同样也可能是Session_Start / End类型的东西。 如果您认为您的网站会变得繁忙,那么您的应用程序始终停止运行就不会有什么问题。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...