作者信息:本篇文章是由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
分享到:
相关推荐
Azure事件中心是一个云服务,用于收集、存储和处理大规模的实时数据流,广泛应用于日志分析、物联网(IoT)数据处理和实时分析等场景。它支持多种编程语言,包括Java,这得益于其对REST API和AMQP协议的兼容性。在Java...
2. 使用事件处理程序主机(EventProcessorHost):EventProcessorHost 是 Azure 事件中心的一个高级抽象,它简化了事件处理流程。开发者只需实现 IEventProcessor 接口,其中包含三个关键方法:OpenAsync、...
2. **使用事件处理程序主机(EventProcessorHost)**:这是一个托管在客户端的框架,可以自动平衡多个消费者实例之间的负载,并处理检查点和故障恢复。 3. **基于 Apache Storm**:这种方式利用 Storm 的分布式计算...
Azure Blob Storage 事件触发是指当 Blob 存储中的 Blob 发生变化时,触发相关的事件处理程序。例如,当用户上传照片到 Blob 存储时,触发照片处理事件,以便生成 mobile-friendly 的照片版本。 知识点3:Azure ...
2. **数据流**:了解如何获取和处理来自 Azure Kinect 的不同数据流,如深度图像、RGB 图像和红外图像。这些数据可以用于构建3D点云、实时物体识别或环境重建。 3. **骨骼追踪**:Azure Kinect 具有强大的骨骼追踪...
"Azure 303+学习资料+备考资料" Azure AZ-303 是微软云架构的考试认证,旨在考察考生的云架构设计和实现能力。本文档将对 Azure 303 的学习资料和备考资料进行梳理,列举出相关的知识点,以供学习和备考参考。 ...
5. **事件网格**:订阅和处理Azure事件网格中的事件,实现事件驱动的架构。 6. **数据库服务**:与Azure SQL Database或Cosmos DB的交互,包括数据的读写、查询和备份恢复。 每个示例通常包含以下部分: - `main.go...
《Azure开发者指南》是一本针对开发者全面介绍Azure云平台的书籍,旨在帮助开发者快速了解和掌握Azure平台的使用,以便构建创新的应用程序。在云计算的时代背景下,Azure作为一个专门为开发者设计的云平台,提供了一...
Azure 人工智能 PLATFORM 可以应用于多个领域,包括图像识别、自然语言处理、语音识别等,旨在帮助企业和组织解决实际问题和挑战。 知识点6: Azure 人工智能 PLATFORM 的技术架构 Azure 人工智能 PLATFORM 的技术...
这个例子展示了如何集成Azure WebJobs与Azure Blob存储服务来实现数据处理或管理任务。让我们深入了解一下Azure WebJobs和Blob服务的相关知识点。 首先,Azure WebJobs是Azure App Service的一部分,它允许我们在...
5. 存储与数据处理:提供包括Azure Storage、Queues、BizTalk服务、混合连接、服务总线、媒体服务、内容分发网络(CDN)、HDInsight、数据工厂、流分析、机器学习和事件中心等在内的一系列存储和数据处理服务。...
- **媒体服务**:支持视频转码、直播流处理等功能。 - **Service Bus**:提供消息传递机制,包括队列、主题、中继和通知中心等功能。 - **计划程序**:自动执行预定的任务。 ##### 4. 网络服务 - **虚拟网络**:...
在本文中,我们将深入探讨如何使用Visual Studio 2017来创建和管理Azure Functions,这是一个基于事件驱动的计算服务,允许开发者构建无服务器应用程序。Azure Functions让你可以在需要时运行代码,而无需预置或管理...
这些消息通过端点进行路由,以便进行进一步的事件处理。 总而言之,Azure IoT Hub是构建在Microsoft Azure公有云上的一个完整物联网解决方案。它为设备连接、设备管理、数据处理和设备监控提供了强大的服务。这些...
- **事件中心与流分析**:支持实时数据流的处理和分析,满足实时性要求较高的应用场景。 - **高并发能力**:能够在高并发场景下保持良好的性能表现。 #### 四、适用场景 - **大数据分析**:适合存储大量数据,并...
需要注意的是,Azure的OCR服务支持多语言,但为了识别中文,我们需要确保在调用时设置正确的语言参数。对于中文,可以使用`Language.CHINESE_SIMPLIFIED`。 在实际应用中,可能还需要处理各种异常,以及优化性能,...
Azure Kinect Examples for Unity.unitypackage unity 商城kinect Azure DK的unity例程 这是一组 Azure Kinect(又名 ‘Kinect for Azure’,K4A)示例,其中采用了几个主要脚本,已分组放在一个文件夹中。该资源包...
2. 高效的数据处理:Azure Stack 允许企业在本地环境中处理数据,满足低延迟和实时性需求。 3. 无处不在的服务:Azure Stack 提供了多种服务,包括 Azure Active Directory、SQL Server、Azure 数据服务等,满足企业...
9. **人工智能与大数据**:Azure提供认知服务、机器学习服务以及大数据处理工具如HDInsight,支持AI和大数据应用的开发。 通过《Windows Azure实战》的学习,读者不仅能理解Azure的基本概念,还能掌握实际操作技巧...