我已使用Start Mode = AlwaysRunning
设置了我的应用程序池此外,我已将以下内容添加到我的web.config
文件
<applicationInitialization doAppInitAfterRestart="true" skipManagedModules="false">
<add initializationPage="/" hostName="example.com" />
</applicationInitialization>
该网站几乎没有请求,除了网站通过Hangfire请求自己,所以我希望网站在回收时自动启动。
在事件查看器中,我看到如下条目:
08:09: A worker process with process id of '2564' serving application pool 'FoobarAppPool' has requested a recycle because the worker process reached its allowed processing time limit.
没关系。它匹配我的应用程序自己的初始化关闭日志。
但接下来是每20分钟一次,持续几个小时:
08:29: A worker process with process id of '3012' serving application pool 'FoobarAppPool' was shutdown due to inactivity. Application Pool timeout configuration was set to 20 minutes. A new worker process will be started when needed.
这似乎表明确实开始了新的工作流程。但我的应用程序日志没有显示任何内容,此时ram / cpu的使用率非常低。
然后几个小时后,该站点将再次开始使用ram / cpu,并且日志开始显示活动。这个“沉默”的时期似乎持续了1到6个小时。
我在这里遗漏了什么吗?
在Azure VM上的IIS 10,Windows Server 2016上运行。
答案 0 :(得分:0)
原来这个问题源于网站的重写规则。
该网站运行https,因此有一条重写规则可将所有http流量重定向到https。
initializationPage
网址将通过http调用,因此需要调整规则以不将该初始请求重定向到https,因为IIS不会遵循重定向,而只是接受301/302状态代码。