私は、私たちにapi/valuesコントローラを提供するAsp.NetコアWebアプリケーション(.Net Core)テンプレートを使用してdotnetコアWeb APIを作成しました。 Windows Azureストレージライブラリv8.0を使用している蒼穹ストレージキューhttps://www.nuget.org/packages/WindowsAzure.Storage/8.0.0Azureストレージキューのパフォーマンスが悪い - わずか200 RPS
現在のところ、私が単一のリクエストをするとき、キューは約平均をとる。メソッドをAddMessageAsync()を完了するために140msしかし、私は200の要求を毎秒の負荷テストを行う場合、同じメソッドが完了するために平均800msかかります。 azureストレージキューによると、毎秒2000リクエストを処理できるはずですが、毎秒200リクエストを取得することはできません。
私は誰かがWebアプリケーションのAPIが期待どおりに実行されない理由として何らかの情報を提供していただければ幸いです。
public class QueueAccessLayer : IQueueAccessLayer
{
private CloudQueueClient _queueClient;
private CloudStorageAccount _storageAccount;
private CloudQueue _emailQueue;
private ILogger<QueueAccessLayer> _logger;
public QueueAccessLayer(ILogger<QueueAccessLayer> logger)
{
_storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=test1;AccountKey=#####;");
_queueClient = _storageAccount.CreateCloudQueueClient();
_emailQueue = _queueClient.GetQueueReference("emailqueue");
_emailQueue.CreateIfNotExistsAsync().Wait();
_logger = logger;
}
public async Task<bool> SendMessage(string msg)
{
Stopwatch watch = new Stopwatch();
watch.Start();
CloudQueueMessage message = new CloudQueueMessage(msg);
await _emailQueue.AddMessageAsync(message);
watch.Stop();
_logger.LogInformation(msg + " - " + watch.ElapsedMilliseconds + "ms");
return true;
}
}
public interface IQueueAccessLayer
{
Task<bool> SendMessage(string msg);
}
RPSもWebAppによって制限されています。[アプリケーションサービスプランの階層を変更したりスケールアウトしてみてください](https:// docs Microsoft.com/en-us/azure/app-service/azure-web-sites-web-hosting-plan-in-depth-overview)を参照して、RPSの改善点を確認してください。 –
現在、私のWebアプリケーションはドッキング・コンテナでローカルに実行されています。 – user1754675
私はこの行をコメントする場合は_queue.SendMessage(emailMessage)を待つことを理解します。私は72秒間の平均応答で約1814要求/秒を取得します。上記で私は600ms平均応答で152 rpsを得る。 – user1754675