作者信息:本篇文章是由Windows Azure 和 ASP.NET MVC组程序员/作家RickAnderson所著。
重启Web Roles
如何重启是Windows Azure 中一个经常被忽视的问题。正确处理重启操作至关重要,这样您就不至于丢失数据或损坏您固有的数据,便于您快速关机、 重启和高效率地处理新的请求。Windows Azure Cloud Service每月大约重启两次用于更新操作系统。 (关于操作系统更新的详细,请参阅RoleInstance
Restarts Due to OS Upgrades。)当一个页面应用程序关闭时,将触发RoleEnvironment.Stopping事件。因为由
Visual Studio 创建的 web role boilerplate不会去重写OnStop方法,所以应用程序在关机前只有几秒钟时间来处理
HTTP 请求。如果您的 web role正忙着处理挂起的请求,有些请求就有可能会丢失。你可以延迟重启时间或让您的 web role推迟最多 5 分钟的时间来重写OnStop方法和调用Sleep,但这并不是很理想。一旦引发Stopping事件,Load
Balance(LB)就停止向web role发送请求,所以拖延关机时间长于处理挂起请求让您的虚拟机处于Sleep状态的时间,并不起什么作用。最佳的方法是等待OnStop方法直到没有更多的请求,然后启动关机。关的越早,VM
重启并开始处理请求就越早。要想使用最佳方法关机,请将下面的代码添加到WebRole类中。
上面的代码检查 ASP.NET 请求的当前的counter。只要有请求,该OnStop方法将调用Sleep延迟关机。一旦当前请求的counter降为零,
OnStop返回并启动关机。万一
web 服务器太忙而不能在 5 分钟内处理完挂起的请求,应用程序也会强行关闭。请记住一旦触发Stopping事件,LB
会停止将请求发送到 web role,所以除非您拥有大量的web role (或太少的实例),否则永远不要超过几秒钟来完成当前请求。
上面的代码为Trace写入数据,但除非您执行一个复杂的On-DemandTransfer,不然
OnStop方法的trace数据将永远不会出现在WADLogsTable上。后面,我将介绍如何使用DebugView来查看这些trace事件。以及如何在web
role 的OnStart方法中获取tracing working。
Worker Roles的最佳重启方法
在一个worker role中处理Stopping事件需要不同的办法。通常worker
role在Run方法中处理队列消息。该方法包括两个全局变量 ;一个通知Run方法Stopping事件已触发,另一个通知OnStop方法可以安全地启动关机。(OnStop返回后启动关机)。下面的代码演示了这两种全局方法。
OnStop调用时,全局变量onStopCalled设置为
true,若没有队列事件需要处理,在Run方法中就可以根据onStopCalled的值在第一层循环时判断是否关机。
查看 OnStop Trace Data
如前面所提到的,除非您执行一个复杂的On-DemandTransfer,不然
OnStop方法的trace数据将永远不会出现在WADLogsTable上。我们将使用Dbgview来查看这些trace事件。在SolutionExplorer中,右键单击云项目并选择Publish.
下载您的发布配置文件。在Publish Windows Azure Application对话框中,选择Debug并勾选Enable RemoteDesktop for all roles。
编译器会将Trace调用从发布版本中移除,所以您需要设置buildconfiguration为Debug来查看Trace数据。一旦应用程序发布并运行,在 Visual Studio 中,选择Server Explorer (Ctl + Alt + S)。选择Windows Azure Compute,然后选择您的云部署。(此项目中叫做t6,它是一个production部署)。选择
web role instance,单击鼠标右键,选择Connect usingRemote Desktop.
Remote DesktopConnection (RDC)将使用您在发布向导中指定的帐户名称,并提示您输入密码。在任务栏的左侧,选择Server Manager图标。
在Server Manager左选项卡,选择Local Server,然后选择IE EnhancedSecurity Configuration (IE ESC)。在IE ESC 对话框中选择关闭radio按钮。
启动InternetExplorer、 下载和安装DebugView。启动DebugView,并在Capture菜单中,选择Capture
GlobalWin32。
选择filter图标,,然后输入下面的排除筛选器:
对于此测试,我在About操作方法中添加了RoleEnvironment.RequestRecycle方法,正如其名字所示,启动关机/重启序列。或者,您可以重新发布应用程序,还将启动关机/重启序列。
按照同样的操作也可以查看worker role VM中的trace data。选择worker roleinstance,用鼠标右键单击并选择Connect using Remote Desktop。
如果您想看到一篇这样的博客,是关于如何让获取trace数据出现在WADLogsTable上而不是用OnStop方法,请联系我。本篇的大部分内容来自于我和Tom上周发布的Azuremulti-tier
tutorial。您一定在此篇文章中也看到了一些其他好的方法。
— — Rick
@RickAndMSFT
Reference: http://blogs.msdn.com/b/windowsazure/archive/2013/01/14/the-right-way-to-handle-azure-onstop-events.aspx
分享到:
相关推荐
Windows Azure
Azure Kinect Examples for Unity.unitypackage unity 商城kinect Azure DK的unity例程 这是一组 Azure Kinect(又名 ‘Kinect for Azure’,K4A)示例,其中采用了几个主要脚本,已分组放在一个文件夹中。该资源包...
基于Apache Storm消费Azure事件中心消息1
Azure104题库.rar
该工具将微软Azure文字转语音后的音频生成文件,并且提供下载链接,方便视频剪辑使用。 1、安装插件 firefox:菜单-->扩展和主题-->调试附加组件-->临时载入附加组件 选择下载的zip文件即可安装成功(firefox关闭后...
基于直接接收的方法消费Azure事件中心消息1
Azure DevOps Server 与现有 IDE 或编辑器集成,可使跨职能团队有效处理各种规模的项目。 个体开发者或者五名或五名以下成员的小团队可免费使用 Azure DevOps Server Express。当团队扩展到五位团队成员以上时,...
Azure SQL Data Warehouse
Azure App Service on Microsoft Azure Stack, developer Ninjitsu: Above and below the clouds!在AzureStack上开发Azure App Service
入门Azure开发很好的一本书,内容不算太深,但都有涉及,适合概览
Windows Azure是微软基于云计算的操作系统,现在更名为“Microsoft Azure”,和Azure Services Platform一样,是微软“软件和服务”技术的名称。Windows Azure的主要目标是为开发者提供一个平台,帮助开发可运行在云...
微软官方手册Microsoft Azure Essentials Fundamentals
Azure for Architects 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Azure Microsoft Azure 部署与管理指南
Build, deploy and manage cloud solutions using combination of Windows Azure Pack, System Center and Hyper-V Impress your peers at work by learning to build applications that can leverage the cloud to ...
Windows Azure 概述
Microsoft SQL Azure Database提供了一种在云中存储数据并从各种应用访问数据的新方法。熟悉SQL Server的开发人员和DBA通过将他们已有的知识与Azure开发和管理的新功能相结合,应该可以迅速地掌握它的使用方法。在...
Microsoft Azure Security Center (IT Best Practices – Microsoft Press) By 作者: Yuri Diogenes ISBN-10 书号: 1509307036 ISBN-13 书号: 9781509307036 Edition 版本: 1 出版日期: 2018-06-01 pages 页数: (276...
《Windows Azure从入门到精通》针对微软的云计算平台windows azure,循序渐进地介绍了如何构建和管理云端的可扩展应用,一次一个知识点,同时辅之以适当的练习,可帮助读者轻松掌握基本的编程技能,掌握windows ...
Learning Azure Functions: Creating Azure Functions in Visual Studio 2017