WebAPI慢速首次调用服务

我遇到了WCF问题和启动时间慢,所以我将所有代码都切换为使用WebAPI。 虽然启动时间已大规模缩短(约8-15秒降至~2),但启动时仍有奇怪的延迟。 目前约为2秒但随后的呼叫始终低于0.5秒,直到发生超时。

我查看了所有ApplicationPool设置,以确保没有任何启动延迟或空闲超时设置。

我发现这个链接很慢第一次调用Web服务 ,这对我没有帮助 – 我仍然在冷启动时获得相同的速度问题。 也发现这一个第一次调用Web服务每天都很慢似乎并不适用于我。

我在我的WebAPI服务上启用了跟踪,发现我的第一个和第二个调用之间的唯一区别是显示WebHostHttpControllerTypeResolver.GetControllerTypes两行。 我似乎无法找到太多关于这一点但它是我能看到的唯一区别。

是否有任何其他类型的日志记录可用于确定实际发生的情况?


这是我在问题下的对话摘要


那么超时永远不会是相同的,但同样的球场…扩展,我发布服务器 – 第一次呼叫是~2秒 – 后续呼叫是~0.5秒。 在大概20分钟(很难确定实际时间)之后,同样的情况发生 – ~2然后~0.5。

20分钟 – 这是默认的AppPool空闲超时(分钟) 。 所以听起来IIS卸载你的应用程序池,以便下次你在20分钟后点击它“再次加载它”(不确定它是否重新编译)因此滞后。 您可以将其设置为0以禁用超时(注意反应)或仅将其设为更大的值。

如果禁用超时,您可能需要考虑添加计划任务以在低使用率时回收您的应用程序池,可能是凌晨1点或适合您需要的时间。

WCF的注释

我遇到了WCF问题和启动时间慢

这也是我的经验(使用IIS托管的WCF),就像我上面提到的那样,只是禁用了我的WCF服务的应用程序池的超时。 这使他们保持温暖和温暖。 另外,当我知道我的系统不会用于允许IIS进行一些内务管理时,我每天都有一个回收事件。

在IIS中托管的WCF就IIS而言, 只是另一个IIS应用程序 。 🙂