Azure Web 角色通过 Autoscaler 不断回收

Posted

技术标签:

【中文标题】Azure Web 角色通过 Autoscaler 不断回收【英文标题】:Azure Web Roles constantly recycling with Autoscaler 【发布时间】:2012-10-29 00:28:45 【问题描述】:

我有一个托管在 azure 上的 wcf 服务。当我部署它并启动自动缩放器对象时,Web 服务角色不断被回收并处于不健康状态。如果我不启动自动缩放器,我没有问题,但是我想使用 WASABi。

这是我的 WebRole.cs

ublic class WebRole : RoleEntryPoint

    private Autoscaler autoscaler;
    public override bool OnStart()
    

        // To enable the AzureLocalStorageTraceListner, uncomment relevent section in the web.config  
        DiagnosticMonitorConfiguration diagnosticConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
        diagnosticConfig.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
        diagnosticConfig.Directories.DataSources.Add(AzureLocalStorageTraceListener.GetLogDirectory());

        // For information on handling configuration changes
        // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

            autoscaler = EnterpriseLibraryContainer.Current.GetInstance<Autoscaler>();
            autoscaler.Start();


        return base.OnStart();
    

    public override void OnStop()
    
        autoscaler.Stop();
    

【问题讨论】:

【参考方案1】:

您是否尝试过使用 IntelliTrace 来诊断回收的原因?这是一个很好的article,描述了如何使用 IntelliTrace 进行设置和故障排除。

【讨论】:

我无法使用 Publish,因为我在公司代理后面。此外,我尝试将自动缩放器置于工作角色中,但会出现同样的问题。我相信 Autoscaler 有一个严重的错误。 我使用的是 1.4 版本的 sdk 而不是 1.6。【参考方案2】:

您的 Run 方法是什么样的?它需要保持角色活着,所以它应该是这样的:

    public override void Run()
             
        Trace.TraceInformation("ScalerRole entry point called", "Information");

        while (true)
        
            Thread.Sleep(100000);
            Trace.TraceInformation("Working", "Information");
        
    

【讨论】:

以上是关于Azure Web 角色通过 Autoscaler 不断回收的主要内容,如果未能解决你的问题,请参考以下文章

在 azure web 角色的临时文件夹中创建和读取 html 文件并提供它

Azure - 从辅助角色访问与 Web 角色相同的 blob

Azure 网站和 Azure Web 角色有啥区别

从 Azure 中的辅助角色部署 Web 角色

如何在 azure 中设置安全的 Web 套接字

Azure CDN - 启用 HTTP 压缩 - 托管 Web 角色