Azure Web应用程序中的间歇性崩溃

Mik*_*org 2 c# azure azure-table-storage azure-web-sites

我们的Web应用程序已经开始无缘无故崩溃了,我现在还不知道它可能是什么.

我们正在为主Web应用程序运行SOAP服务的基本身份验证和ADFS.崩溃可以在白天的任何时间发生.它是一个测试环境,流量相当低.当检测到崩溃时,我已经提取了下面的一些日志.

<Event>
    <System>
      <Provider Name="ASP.NET 4.0.30319.0"/>
      <EventID>1309</EventID>
      <Level>2</Level>
      <Task>0</Task>
      <Keywords>Keywords</Keywords>
      <TimeCreated SystemTime="2015-06-12T11:23:21Z"/>
      <EventRecordID>274964734</EventRecordID>
      <Channel>Application</Channel>
      <Computer>RD0003FF410F64</Computer>
      <Security/>
    </System>
    <EventData>
      <Data>3001</Data>
      <Data>The request has been aborted.</Data>
      <Data>6/12/2015 11:23:21 AM</Data>
      <Data>6/12/2015 11:23:21 AM</Data>
      <Data>b1c5d35e8a26444ba38a8c6a0af0236f</Data>
      <Data>1305</Data>
      <Data>4</Data>
      <Data>0</Data>
      <Data>/LM/W3SVC/698610343/ROOT-1-130784515189471125</Data>
      <Data>Full</Data>
      <Data>/</Data>
      <Data>D:\home\site\wwwroot\</Data>
      <Data>RD0003FF410F64</Data>
      <Data></Data>
      <Data>6384</Data>
      <Data>w3wp.exe</Data>
      <Data>IIS APPPOOL\xxxx-test</Data>
      <Data>HttpException</Data>
      <Data>
        Request timed out.

      </Data>
      <Data>https://xxx.yy:443/</Data>
      <Data>/</Data>
      <Data>111.11.11.11</Data>
      <Data></Data>
      <Data>False</Data>
      <Data></Data>
      <Data>IIS APPPOOL\xxxx</Data>
      <Data>963</Data>
      <Data>IIS APPPOOL\xxxx</Data>
      <Data>False</Data>
      <Data>
      </Data>
    </EventData>
  </Event>
</Events>


 <EventData>
      <Data>3005</Data>
      <Data>An unhandled exception has occurred.</Data>
      <Data>6/18/2015 5:43:35 AM</Data>
      <Data>6/18/2015 5:43:35 AM</Data>
      <Data>ff2588624f0f47bc86f14cb636d4ca12</Data>
      <Data>1759</Data>
      <Data>3</Data>
      <Data>0</Data>
      <Data>/LM/W3SVC/1001219836/ROOT-1-130789123624036190</Data>
      <Data>Full</Data>
      <Data>/</Data>
      <Data>D:\home\site\wwwroot\</Data>
      <Data>RD0003FF410F64</Data>
      <Data></Data>
      <Data>6988</Data>
      <Data>w3wp.exe</Data>
      <Data>IIS APPPOOL\xxx__70d6</Data>
      <Data>WebException</Data>
      <Data>
        Unable to connect to the remote server
        at System.Net.HttpWebRequest.GetResponse()
        at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext)

        An attempt was made to access a socket in a way forbidden by its access permissions 111.11.11.111:443
        at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
        at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket&amp; socket, IPAddress&amp; address, ConnectSocketState state, IAsyncResult asyncResult, Exception&amp; exception)

      </Data>
      <Data>https://111.111.11.11:443/</Data>
      <Data>/</Data>
      <Data>111.111.11.11</Data>
      <Data></Data>
      <Data>False</Data>
      <Data></Data>
      <Data>IIS APPPOOL\xxx__70d6</Data>
      <Data>1116</Data>
      <Data>IIS APPPOOL\xxx__70d6</Data>
      <Data>False</Data>
      <Data>
        at System.Net.HttpWebRequest.GetResponse()
        at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext)
      </Data>
    </EventData>
  </Event>
Run Code Online (Sandbox Code Playgroud)

Pun*_*pta 8

Azure webapps对在给定时间点可以同时进行的最大TCP连接数有限制,并且您正在获得的错误"试图以禁止的方式访问套接字......"通常在此限制时发生被打了.大型实例中此限制较高而小实例较少(我认为小型实际为4000但我可能错了)....如果您没有正确关闭TCP连接到外部服务或打开数千个连接,您可能会遇到这种情况几分钟的间隔.大多数情况下,问题不在于正确关闭连接.如果您在同一个应用程序托管计划中托管了许多站点,但是如果您在一个托管计划中只有几个站点,那么隔离哪个站点正在打开连接可能会变得有点挑战,那么您可以使用DAAS收集转储(诊断即服务)当问题发生时你必须在本地下载转储并在WinDBG等工具中打开它们,看看有多少个System.Net.Sockets.Socket对象.如果可以,您可能希望通过在不同的应用程序托管计划中拆分站点来隔离负责打开过多连接的站点,或者只是将它们扩展为更大的实例以允许Moore TCP连接....

对此进行故障排除有点棘手,因此您可以与Microsoft支持部门联系并提供帮助,但希望这能为您提供一个起点...如果您需要进一步的帮助,请发送电子邮件给我puneetg [at] Microsoft.com,我们可以尝试一些事情并发布我们可以与社区分享我们的发现.我试图了解如何在将来更轻松地对此方案进行故障排除

编辑 - 2017年12月4日

截至目前,您可以通过转至"诊断并解决"刀片并单击"TCP连接"来监控WebApp的TCP连接.可从@ https://twitter.com/puneetguptams/status/936669451931459584获取快速截图