Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure云服务-似乎总是在加速_Azure_Azure Cloud Services - Fatal编程技术网

Azure云服务-似乎总是在加速

Azure云服务-似乎总是在加速,azure,azure-cloud-services,Azure,Azure Cloud Services,我已经实现了一个azure云服务(recipesavants.cloudapp.net),它有两个实例(都很小),每当我转到URI时,第一个页面的呈现就要花费永远的时间(通常是30秒以上) 我认为这是因为实例正在从睡眠或非活动状态旋转,对吗 为了缓解这种情况,我创建了一个worker角色,使用以下代码每分钟ping一次URI: using (var client = new HttpClient()) { // New code: client.BaseAddress = new

我已经实现了一个azure云服务(recipesavants.cloudapp.net),它有两个实例(都很小),每当我转到URI时,第一个页面的呈现就要花费永远的时间(通常是30秒以上)

我认为这是因为实例正在从睡眠或非活动状态旋转,对吗

为了缓解这种情况,我创建了一个worker角色,使用以下代码每分钟ping一次URI:

using (var client = new HttpClient())
{
    // New code:
    client.BaseAddress = new Uri("http://brewsavants.cloudapp.net");
    HttpResponseMessage response = await client.GetAsync("");
    client.BaseAddress = new Uri("http://recipesavants.cloudapp.net");
    response = await client.GetAsync("");
    client.BaseAddress = new Uri("http://recipesavantsapi.azurewebsites.net/api/ping");
    response = await client.GetAsync("");
}

但是,大约20分钟后,这些实例似乎仍会进入睡眠状态。还有别的工作吗?我确实需要这些实例具有高可用性和快速性。

您可以在包中包含一个脚本,该脚本配置为在每次重新启动角色时作为启动脚本运行

一个startup.cmd文件,放置在web角色项目中名为startup的文件夹中

REM *** Prevent the IIS app pools from shutting down due to being idle.
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00

REM *** Prevent IIS app pool recycles from recycling on the default schedule of 1740 minutes (29 hours).
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.time:00:00:00
将“复制到输出目录”设置为“始终复制”,使其成为包的一部分。 在Azure云服务项目的service definition.csdef中,您必须添加行

<Startup>
  <Task commandLine="Startup\Startup.cmd" executionContext="elevated" />
</Startup>


重新部署您的解决方案

这更像是一个与IIS相关的问题,因为Azure Web角色只运行普通IIS。您将看到ASP.Net应用程序的默认行为—在一段时间未使用后,卸载其应用程序池,然后在一段时间内开始下一个请求。对于Web角色,有几种解决方案(在堆栈溢出和其他方面)。请在您选择的搜索引擎上查找“always on azure webrole”。不确定这是否与此直接相关,但我不久前曾讨论过调整AppPool超时以处理20分钟的窗口。