如何在工作日的特定时间回收应用程序池?

时间:2012-02-28 15:48:46

标签: asp.net iis

是否可以仅在工作日安排特定时间的应用池回收?

提前致谢!

4 个答案:

答案 0 :(得分:5)

如果您无法直接使用IIS配置所需的计划,则可以创建一个调用

的计划任务
c:\Windows\system32\inetsrv\appcmd.exe recycle apppool "NameOfTheAppPool"

在所需的时间。

答案 1 :(得分:3)

如果您使用的是IIS 7,PeriodicRestart是关键。将以下内容添加到ApplicationHost.config文件中:

<add name="YourApplicationPool">
   <recycling logEventOnRecycle="Schedule">
      <periodicRestart>
         <schedule>
            <clear />
            <add value="12:00:00" />
         </schedule>
      </periodicRestart>
   </recycling>
   <processModel identityType="NetworkService" shutdownTimeLimit="00:00:30" startupTimeLimit="00:00:30" />
</add>

它会在每天12点回收你的Application Pool

如果您使用的是IIS7,则可以在工作日设置Scheduled Task,运行以下命令:

appcmd.exe recycle apppool "YourApplicationPool"

如果您使用的是IIS6,我会遵循指南here

答案 2 :(得分:2)

documentation说明了如何使用应用池回收设置。

<add name="Contoso">
   <recycling logEventOnRecycle="Schedule">
      <periodicRestart>
         <schedule>
            <clear />
            <add value="03:00:00" />
         </schedule>
      </periodicRestart>
   </recycling>
   <processModel identityType="NetworkService" shutdownTimeLimit="00:00:30" startupTimeLimit="00:00:30" />
</add>

答案 3 :(得分:0)

如果您在Azure中托管,则可以使用包含以下内容的startup.cmd文件(来自here):

REM Prevent unwanted recycling
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.time:00:00:00

REM Recycle every day at 4am
%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/applicationPools /+applicationPoolDefaults.recycling.periodicRestart.schedule.[value='04:00:00'] /commit:apphost
相关问题