0

現在、予想される大量の負荷に備えて Azure ロール (標準の Web ロール) を準備しており、現在のセットアップが消費するメモリの量を知る必要があります。これを達成するために、消費されたメモリを で測定しながら負荷テストを使用していますGC.GetTotalMemory

ページhttp://technet.microsoft.com/en-us/cloud/gg663909.aspxCompute Instance Guaranteed Memoryには、各インスタンスのサイズ (たとえば、0.768 GB極小インスタンスと3.5 GB中インスタンス) が一覧表示されています。

の値は、これらのリストの値にGC.GetTotalMemory匹敵しますか? 言い換えればGC.GetTotalMemory、リストされた制限を大幅に下回っている場合、メモリのスワッピングによる突然のパフォーマンスの低下はないと確信できますか?

制限に達した場合、何らかのメモリ スワッピング (仮想ハード ディスクへのメモリ コンテンツの書き込み) が発生するという仮定は正しいでしょうか?それとも、App Pool のリサイクルが繰り返されるなど、より深刻な影響が生じるでしょうか?

(最後の質問は、メモリ制限に達すると、ほとんどの共有ホスティング会社がアプリ プールをリサイクルするためですが、率直に言って、Windows Azure にこのようなことは期待していません)

4

2 に答える 2

1

このメソッドは、プロセスによって現在割り当てられているバイトのみを提供します。0.768 GBには、オペレーティングシステムで使用可能なメモリが含まれており、仮想メモリも存在する可能性があります。

system.gc.gettotalmemory

使用できるシステムメモリの合計を取得するには、次のようにします。

System.Managementへの参照を追加します。

private static void DisplayTotalRam()
{
  string Query = "SELECT MaxCapacity FROM Win32_PhysicalMemoryArray";
  ManagementObjectSearcher searcher = new ManagementObjectSearcher(Query);
  foreach (ManagementObject WniPART in searcher.Get())
  {
    UInt32 SizeinKB = Convert.ToUInt32(WniPART.Properties["MaxCapacity"].Value);
    UInt32 SizeinMB = SizeinKB / 1024;
    UInt32 SizeinGB = SizeinMB / 1024;
    Console.WriteLine("Size in KB: {0}, Size in MB: {1}, Size in GB: {2}", SizeinKB, SizeinMB, SizeinGB);
  }
}

コードのソース

于 2012-10-16T12:47:53.143 に答える
1

最後の質問に答えると、Windows Azure は邪魔にならず、他の Windows サーバーと同様にページングが行われます。

IIS がアプリ プールをリサイクルするかどうかは、IIS の設定に依存する可能性がありますが、それらはユーザーが制御できます。(たとえば、デフォルトを変更する場合は、スタートアップ タスクで appcmd を実行できます。)

于 2012-10-16T16:10:30.463 に答える