【问题标题】:Schedule IIS Reset on Azure Cloud Service在 Azure 云服务上安排 IIS 重置
【发布时间】:2016-08-01 15:47:46
【问题描述】:

我有一个 Azure 云服务,它需要在应用程序池上线时进行一些预热(通常需要 5-10 分钟)。因此,我喜欢在非工作时间安排 IIS\App 池回收。当我的回收发生在中午时,我让用户对我大喊大叫(我不想被大喊大叫)

我一直在做的是远程进入虚拟机,将 cmd 文件添加到本地磁盘并创建运行 cmd 文件的计划任务:

net stop "World Wide Web Publishing Service"
net start "World Wide Web Publishing Service"

我的问题是,PaaS 服务会定期“刷新”,所以随机地,我手动发布到云服务 VM 的任何代码\文件都会消失。我需要远程回到机器并重新添加我的 cmd 和计划任务。

我知道云服务允许您运行启动任务等。我是否可以执行类似于启动任务的操作,允许我在发布应用程序时打包此 cmd 文件,但在外部安排这些命令?如果是这样..如何?

【问题讨论】:

    标签: azure azure-cloud-services


    【解决方案1】:

    启动任务可以执行您包含在.cspkg 中的任何无人参与的应用程序/安装程序。您需要确保有问题的 cmd 文件已正确捆绑(例如,将 configureSchedule.cmd 添加到项目中,确保将其复制到输出目录)。

    由于您正在尝试设置调度,您可能需要在提升模式下运行您的 cmd

    <Startup>
        <Task commandLine="configureSchedule.cmd" executionContext="elevated" taskType="simple" >
            <Environment>
                <Variable name="MyVersionNumber" value="1.0.0.0" />
            </Environment>
        </Task>
    </Startup>
    

    【讨论】:

    • 感谢@DavidMakogon!我会在旗杆上试一试,但非常感谢
    【解决方案2】:

    更好的解决方案是更改 AppPool 设置以在特定时间回收。从 David Makogan 提到的启动脚本中执行此操作。

    看这里: Set default app pool recycling via command line

    设置回收时间: https://www.iis.net/configreference/system.applicationhost/applicationpools/add/recycling/periodicrestart

    一定要取消勾选“定期时间间隔”,否则白天会有回收事件。

    另外,您正在停止 WWW 服务,更快的方法是仅回收应用程序池。这样就启动了一个新的应用程序池,而旧的应用程序池处理来自用户的最后一个请求。所以(几乎)没有连接丢失

    appcmd recycle apppool /apppool.name: Marketing 
    

    【讨论】:

    • 感谢@ErikOppedijk 提供的信息。我的问题是,VM 会定期“重置”,而我所做的自定义更改(例如手动将文件添加到云服务 VM 上的驱动器)会消失。所以目前,我需要远程回到机器并手动重新装备,这是我试图避免的。此外,感谢有关 appcmd 的提示,但我的应用程序池名称始终是随机生成的,不幸的是,这导致该解决方案出现问题。
    • 上述脚本必须放在启动脚本中,就像大卫提到的那样。优点是这是本机 IIS 功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多