2017-04-12 24 views
2
  • 言語である:C#
  • フレームワーク:.NET 4.5
  • Nuget:WindowsAzure.Storageバージョン8.0.1

こんにちは。Microsoft.WindowsAzure.Storage.StorageException - サーバーがビジー状態の

私は、プロダクションサイトのログで「サーバーがビジー状態です」と伝えています。Microsoft.WindowsAzure.Storage.StorageExceptionが表示されています。誰もこの行動を取り除く方法に関する経験やプロのヒントを持っていますか?私はAzure Portalの設定を変更するか、コードで何かするべきでしょうか?

下の例のpublic static IEnumerable<MessageEntity> Get(string sentTo)が呼び出されたときにエラーが発生します。

コード:

private static CloudTable GetMessageTable() 
{ 
    var storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString")); 
    var tableClient = storageAccount.CreateCloudTableClient(); 
    var table = tableClient.GetTableReference(CloudConfigurationManager.GetSetting("MessageTable")); 

    try 
    { 
     if (!table.Exists()) 
      table.Create(); 
    } 
    catch (Exception e) 
    { 
     // Log err 
    } 

    return table; 
} 

public static IEnumerable<MessageEntity> Get(string sentTo) 
{ 
    var table = GetMessageTable(); 
    var query = new TableQuery<MessageEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, sentTo)); 

    var result = table.ExecuteQuery(query); 
    return result.OrderByDescending(r => r.SentDate); 
} 

ログイン:

Microsoft.WindowsAzure.Storage.StorageException: The remote server returned an error: (503) Server Unavailable. ---> System.Net.WebException: The remote server returned an error: (503) Server Unavailable. 
    at System.Net.HttpWebRequest.GetResponse() 
    at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 677 
    --- End of inner exception stack trace --- 
    at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 604 
    at Microsoft.WindowsAzure.Storage.Table.TableQuery`1.<>c__DisplayClass7.<ExecuteInternal>b__6(IContinuationToken continuationToken) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Table\TableQuery.cs:line 430 
    at Microsoft.WindowsAzure.Storage.Core.Util.CommonUtility.<LazyEnumerable>d__0`1.MoveNext() in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\Common\Core\Util\CommonUtility.cs:line 322 
    at System.Linq.Buffer`1..ctor(IEnumerable`1 source) 
    at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__1.MoveNext() 
    at System.Linq.Enumerable.Count[TSource](IEnumerable`1 source, Func`2 predicate) 
    at *** removed *** 
Request Information 
RequestID:*** removed *** 
RequestDate:Tue, 11 Apr 2017 15:30:30 GMT 
StatusMessage:Service Unavailable 
ErrorCode:ServerBusy 
ErrorMessage:The server is busy. 
RequestId:*** removed *** 
Time:2017-04-11T15:30:31.0229653Z 

答えて

2

エラーは、アプリケーションをAzureストレージテーブルサービスで絞らなっていることを示唆しています。

これらの問題を調べるには、ストレージアナリティックメトリックを有効にし、アプリケーションがストレージスケーラビリティターゲット内にあるかどうかを確認することが有効です。要求の数と抑制エラーの数のトランザクションメトリックがあります。

https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/about-storage-analytics-metrics

https://docs.microsoft.com/en-us/azure/storage/storage-scalability-targets

コードから、あなたがまだの場合は、クライアント側の再試行を追加することを検討してください。また、PartitionKeyスキャンを避けることをお勧めしますが、アプリケーションの性質を知らなくても追加のコメントを提供することは難しいです。

関連する問題