IIS6 Webサイト/アプリプールが使用できる最大メモリはどれくらいですか?


8

Windows 2003 SP2 x86で実行されているIIS 6サーバーがあります。サーバーには4 GBのRAMがあり、2 GBが割り当てられた状態で一貫して実行されます。

x86を使用すると、サーバーが4GBのRAMをすべて利用するわけではなく、アプリケーションのスペースも制限されますが、IISプロセスは他の場所で制限されているようです。w3wp.exeには500MBを超える割り当てがなく、ビジーな.NETアプリケーションからOutOfMemory例外が発生することがあります(複数のアプリケーションが実行されており、それぞれに個別のアプリケーションプールがあります)。

IIS6 Webサイト/アプリプールが使用できる最大メモリはどれくらいですか?

回答:


7

Windows x86でのアプリは2GB / EAに制限されています。これを変更するには、boot.iniに/ 3gbフラグを追加しますが、これによりアプリケーションが予期しない動作をする可能性があるため、注意して使用する必要があります。MSはこれを公式にサポートしていません(http://technet.microsoft.com/en-us/library/bb124810.aspx

IISのメモリ制限は、関連するアプリプールの[リサイクル]タブで設定できます。

アプリケーションが500MBを超えないことをどのように判断していますか?タスクマネージャーを使用している場合は、Windowsが理解しているように、メモリ使用量を正確に表すことはほとんどありません(あるとしても)。プロセスエクスプローラーを使用する:http : //technet.microsoft.com/en-us/sysinternals/bb896653.aspx

他にも多くの関連する質問があります:

  • イベントログにエラーが記録されていますか?
  • 例外をスローする特定のコード行ですか?もしそうなら、このOutOfMemory例外は実際にはIISの問題ですか、それともコードの問題ですか?
  • あなたはアプリケーションのプールをリサイクリング設定で制限していますか?
  • このマシンで実行されている他のサービスはありますか?

ほとんどの場合、IIS、ASP.NET、およびそれらに関連するすべての手荷物は、Windowsタスクマネージャーに表示されていなくても、2 GBの制限に達しています。リサイクルの制限を設定するか、x64にアップグレードすると、おそらく大きな違いが生じます。


3

忙しい.NETアプリケーションからOutOfMemory例外を受け取ることがある

これに対する答えは複雑すぎて答えに収まりません。主題の完全な扱いについては、「。NETアプリケーションのパフォーマンスのチューニング」を参照してください。

これは、非常に単純化された(しかし、かなり良い)ブルーノジュヒエの要約です

さらに、.NETランタイムでは、最大2 GBにできません。ガベージコレクターはライブオブジェクトをコピーすることで機能するため、コピーを実行するにはかなりの容量が必要です。

編集:

これが私の説明の試みです...

x86上のASP.NETワーカープロセス(ワーカーによって報告される)の最大ワーカープロセスメモリサイズがどのくらいか疑問に思っている場合、答えは「依存する」です。

Javaや.NETなどのあらゆる種類のマネージコードでは、ポインターを処理する必要がないため、プログラマーはメモリの細かい制御を諦めます。プログラムが実行されると、ヒープとスタックはガベージコレクターによって定期的にクリーンアップされます。

特にASP.NETに関しては、ガベージコレクターはWebサイトと同じワーカープロセス内で実行されます。GCはそれ自体のメモリを消費します。どのくらいのメモリは、完全にあなたのアプリケーションのコードが書かれているかの関数です。1つのアプリが1.8GBのメモリを使用できる一方で、別のアプリは500MBで窒息する可能性があります。理由を理解するには、特定のアプリケーションのプロファイルを作成する必要があります。


OutOfMemory例外のデバッグは複雑であることに同意します-リンクに感謝します。しかし、私はメモリがどのように制限されているかを尋ねています。それはそれに答えることができるはずです。
Robin M

2

x86 Windows OS上のプロセスは、boot.iniファイルで/ 3gbスイッチを設定していない限り2gbに制限されています。この場合、プロセスは3gbを使用できます。


はい、しかし、プロセスの2GBに近いところはありませんか?
ロビンM

2

このブログ投稿「SharePointアプリケーションプール設定の推奨事項」から

物理に焦点を合わせると、通常、メモリの数と量に応じてアプリプールが非常に少ない32ビットアプリでは、アプリプールを最大800 MBから1200 MB程度に制限します。2 GBのRAMを搭載したサーバーでは、最大で約800 MBに設定します。4 GBのRAMサーバーで約1 GB以上、最大で約1200です。8〜16 GBのメモリを備えた64ビットのWebフロントエンドでは、2 GBのRAMの設定、またはそれを実行できるようにすることさえ聞いたことがあります。それを制限するのではなく。

これらは実際に処理してキャッシュするまで大きくなる可能性があるため、プロファイルを作成する必要があります。メモリの量と負荷が大きいほど、ワーカープロセスが大きくなります。人々がアプリプールの設定について尋ねるとき、これは彼らが通常何が何であるべきかを尋ねているところです。ここで行っていることは、アプリプールがより多くのメモリを消費することを明示的に制限しています。この設定は[リサイクル]タブにありますが、それには理由があります。

アプリプールが最大値に達すると、最大プロセッサ設定とは異なります。小さな再起動やiisresetに似たワーカープロセスを循環させますが、メモリを解放するためにこれを実行したい場合があるためです。理想的な世界では、24時間に2、3回以上サイクルする必要はありません。朝のピークが発生する直前に循環して、利用可能なメモリが最大になるようにし、バックアップまたはクロールが始まる前の1日の終わりに循環するという話を聞いたことがあります。

私の経験から、800 MBは32ビットマシン(2〜4 GB RAM)のしきい値です。「メモリ不足」の例外をスローする前に、アプリプールをリサイクルします。


2

アプリプールに仮想メモリサイズを設定していないことを確認してください。この値を許容範囲外の数値に設定すると、512MBに戻ります。KB923197を参照してください。

また、ASP.Netアプリケーションを実行している場合、ASP.Netは2GBのメモリ制限の60%、つまり1.2 GBでプールをリサイクルします。これは500シナリオではありませんが、メモリを大量に使用する32ビットのアプリケーションプールでは、メモリを少し増やすためにこれを週に1回行う場合があります。

<system.web> 
  <processModel memoryLimit="80" />
</system.web> 

1

Windows 2003では、物理割り当て拡張(PAE)を設定してすべてのメモリを使用できます。IIS6アプリプールのデフォルトメモリは5MBです。


わかりました、しかしそれはプロセスが500MBに制限される理由を説明しません。アプリプールのデフォルトメモリは興味深いものですが、実際には関連性も有用性もありません。申し訳ありません。
Robin M

たまたま同じボックスでSQLを実行していますか?

いいえ。SQLは同じ箱に入っていません。IISを使用するweb / ftp / smtpに制限されています。
Robin M
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.