Microsoft Azure:什么生成频繁的〜/ Monitor / MonitorPage.aspx页面请求?

时间:2015-02-18 16:25:25

标签: azure

我们有一个ASP.NET网站,由在Azure上的VM中运行的两个Web角色实例支持,具有最新的Azure SDK for .NET 2.5。突然间,我们看到了以下几十个例外:

Error Caught in Application_Error event
SOURCE: System.Web
ERROR MESSAGE: The file '/Monitor/MonitorPage.aspx' does not exist.
STACK TRACE:   at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
   at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
   at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp)
   at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
   at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) EVENT LOG ENTRY TYPE: Error
VERSION: MyApp, Version=10.7.5521.24961, Culture=neutral, PublicKeyToken=null Error on Page: /Monitor/MonitorPage.aspx Error in URL: http://255.255.255.255/Monitor/MonitorPage.aspx
FORM: 
QUERYSTRING: 
WEB BROWSER: Unknown 0.0
USER HOST ADDRESS:  255.255.255.255
USER HOST NAME:  255.255.255.255

我故意混淆了应用名称和IP地址。

我查看了两个实例的siteroot目录,但都没有~/Monitor/MonitorPage.aspx页面。

我查看了两个实例上的应用程序事件日志以查找错误。一个实例的错误似乎过多。所以,我重新想象它。现在,两个实例应用程序日志上的错误都是名义上的,但异常仍然每30秒抛出一次。

另一个线索是Azure管理控制台中的云服务监控页面是空白的,包括最近7天的时间跨度。它以前从未空白过。

在阅读SDK 2.5的Configuring Diagnostics for Azure Cloud Services and Virtual Machines之后,我意识到我错过了一个诊断配置文件。所以我将它添加到Web角色并重新部署。这是我混淆的diagnostics.wadcfgx文件:



<?xml version="1.0" encoding="utf-8"?>
<DiagnosticsConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
  <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
    <WadCfg>
      <DiagnosticMonitorConfiguration overallQuotaInMB="4096">
        <DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter="Error" />
        <Directories scheduledTransferPeriod="PT1M">
          <IISLogs containerName="wad-iis-logfiles" />
          <FailedRequestLogs containerName="wad-failedrequestlogs" />
        </Directories>
        <PerformanceCounters scheduledTransferPeriod="PT1M">
          <PerformanceCounterConfiguration counterSpecifier="\Memory\Available MBytes" sampleRate="PT3M" />
          <PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\ISAPI Extension Requests/sec" sampleRate="PT3M" />
          <PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\Bytes Total/Sec" sampleRate="PT3M" />
          <PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Requests/Sec" sampleRate="PT3M" />
          <PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Errors Total/Sec" sampleRate="PT3M" />
          <PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Queued" sampleRate="PT3M" />
          <PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Rejected" sampleRate="PT3M" />
          <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT3M" />
        </PerformanceCounters>
        <WindowsEventLog scheduledTransferPeriod="PT30M">
          <DataSource name="Application!*" />
          <DataSource name="MyAppLog!*" />
        </WindowsEventLog>
        <CrashDumps>
          <CrashDumpConfiguration processName="WaIISHost.exe" />
          <CrashDumpConfiguration processName="WaWorkerHost.exe" />
          <CrashDumpConfiguration processName="w3wp.exe" />
        </CrashDumps>
        <Logs scheduledTransferPeriod="PT30M" scheduledTransferLogLevelFilter="Error" />
      </DiagnosticMonitorConfiguration>
    </WadCfg>
    <StorageAccount>joqs</StorageAccount>
  </PublicConfig>
  <PrivateConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
    <StorageAccount name="MyAzureStorageAccountName" key="MyAzureStorageAccountKey==" endpoint="https://core.windows.net/" />
  </PrivateConfig>
  <IsEnabled>true</IsEnabled>
</DiagnosticsConfiguration>
&#13;
&#13;
&#13;

另一个线索是我在Web角色的F:\ approot \ bin目录中看到了diagnostics.wadcfgx文件的副本。

不幸的是,例外情况并没有停止。因此,我向Microsoft提交了Azure支持请求。支持工程师验证了从Azure IP地址生成了不需要的页面请求。但是,他们还没有能够告诉我请求的来源。作为一种停止间隔度量,可以更轻松地创建虚拟页面以满足请求,而不是像Block Specific IP Addresses from Accessing a Web Role中所述阻止IP地址。

有谁知道这些频繁的〜/ Monitor / MonitorPage.aspx请求会产生什么?

1 个答案:

答案 0 :(得分:0)

Microsoft Azure支持人员发现该问题是由SLB(软件负载均衡器)中的错误引起的。