【问题标题】:Logging when an Azure (Basic) Web App Exceeds QuotasAzure(基本)Web 应用程序超出配额时的日志记录
【发布时间】:2017-06-06 13:18:22
【问题描述】:

为了测试目的运行一个基本的、免费的 Windows Azure Web 应用程序我经常超过 3 分钟的 CPU 时间(短)配额。

例如,在试用作为 Web Job 实现的图像优化 Nuget 包 AzureImageOptimizer 时,初始优化运行超出限制并停止服务器。

我注意到这些事件没有记录在 Web 应用的活动日志中。为什么?

问题:

  • 是否记录了这些事件?
  • 是因为这是一个免费的网络应用程序吗?
  • 是否可以配置 Web 应用程序以便记录它们?
  • 是否有其他方法可以捕获这些 活动?

额外问题:

  • 我可以在超出配额之前收到通知吗?

【问题讨论】:

  • 在对此进行了一些研究之后,似乎可以在监控部分下将警报添加到 Web 应用程序中,并具有基于 CPU 时间的触发条件。例如,如果 CPU 时间在过去 5 分钟内超过 160 秒,则发送电子邮件。这将捕获并记录活动日志中的事件。

标签: azure azure-web-app-service


【解决方案1】:

是否记录了这些事件?

没有。如果应用程序的使用超过 CPU(短)、CPU(天)或带宽配额,则应用程序将停止,直到配额重新设置。不会将任何日志写入任何地方。

是因为这是一个免费的网络应用程序吗?

免费和共享计划都有资源限制。

可以配置 Web 应用程序以便记录它们吗?

我也没有找到任何方法。

是否有其他方法可以捕获这些事件?

由于您使用的是 WebJob,因此您可以在函数中添加 CancellationToken 参数。如果 Web 应用程序停止。 IsCancellationRequested 属性将在函数停止之前设置为 true。

public static void ProcessQueueMessage([QueueTrigger("myqueue")] string message, CancellationToken cancellationToken)
{
    Task.Run(new Action(longTimeJob), cancellationToken);
    while (true)
    {
        Thread.Sleep(1000);
        if (cancellationToken.IsCancellationRequested)
        {
            Console.WriteLine("The function has been Cancelled since the Web App is stopped!");
        }
    }
}

这是我在 Web 应用停止时从 Azure WebJobs Dashboard 捕获的信息。

[06/07/2017 07:52:53 > 9d3635: INFO] The function has been Cancelled since the Web App is stopped!
[06/07/2017 07:52:53 > 9d3635: ERR ] Thread was being aborted.
[06/07/2017 07:52:53 > 9d3635: SYS INFO] WebJob process was aborted
[06/07/2017 07:52:54 > 9d3635: SYS INFO] Status changed to Stopped

【讨论】:

    猜你喜欢
    • 2015-12-24
    • 2023-04-08
    • 2013-01-12
    • 1970-01-01
    • 2016-03-24
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    相关资源
    最近更新 更多