web-dev-qa-db-ja.com

Windows Server-「ストレージが不足しています」エラー

2つのIIS 7台のサーバーがWebガーデンで実行されます。各サーバーにすべてのサイトのコピーがあります。ファイルはDFSを使用して同期されます(ソースファイルのみ)。画像と大きなファイルは別の場所にあります共有を使用するサーバー。

少なくとも週に数回、エラーが発生します"Not enough storage available"ファイルを読み取るとき、またはサーバーコードを処理するとき。 IISサーバーは(DFSと同期するものだけでなく)ローカルディスクへのパスをマップできません)また、グループポリシーのアクセス許可の読み込みに問題があるようです(さまざまなエラーが発生します)。 LAN上のサーバーで共有を開くことができません。他のカスタムアプリケーションからファイルを読み取るときにI/Oエラーも発生します。このフォールアウト時のディスク速度と待ち時間はどちらも問題ありません。ファイルをコピーするか、ドライブ速度、通常は機能します。「マイコンピュータ」やその他のソフトウェア(パフォーマンスモニターなど)を実行できないこともあります。「管理者として実行」した場合にのみ起動します。すべてのディスクに十分なストレージが利用可能です。

ほとんどのサイトが機能しなくなります(すべてではありません)。サーバーの再起動後、数日間はすべて正常に動作し、その後問題が再発します。

サーバーはVMWAREを使用して仮想化され、50個のIISプール(一部はメモリ制限があります)と各サーバーに約200の実行サイトがあります。両方のサーバーに16GBのRAM (使用率は約80%)CPUは常に30〜60%です。

IRPStackSizeレジストリプロパティをより大きな数値に変更してみましたが、変更はありませんでした。問題はまだ存在しています。アンチウイルス(NOD)を無効にしようとしましたが、成功しませんでした。

ヒントはありますか?たぶん、IIS制限(多くのサイト/プールに対して))に近いのでしょうか?多分32ビットOSと16GBのRAM?多分いくつかの「秘密の」レジストリ設定があります...毎日の再起動は長期的な解決策です。

6
easwee

Not enough storage availableエラーはディスクストレージとは関係ありません。内部メモリについてです。

このエラーは再現が非常に簡単です。大きなファイル(画像またはDLLなど)の束を選択し、右クリックして[開く]オプションを使用して、すべてをメモ帳で開きます。これは内部メモリの割り当てをすべて消費するはずです。スワップファイルが最大容量に近づくと、ランダムサービスがログ記録を開始しますNot enough storage availableをイベントログに追加します。多くの場合、再起動されるまで障害状態のままになります。

私は自分のサービスでこの問題に遭遇し、そのようなエラーがスレッドで発生したときにサービスプロセスを強制的に終了させるために、追加のエラー処理を追加する必要がありました。このようにして、サービスは自動的に再起動および回復します。

IISは通常、この状況を非常にうまく処理します(平均的なWindowsサービスと比較して)。

これを引き起こすプロセス(通常はメモリリーク)を見つけるには、 パフォーマンスモニター mmcスナップインを使用し、実行中のプロセスのメモリ使用量を記録する必要があります(何を記録するかを決定するときは選択してください)これらのログファイルは非常に大きくなる可能性があるため)。別のオプションは xperf を使用することです。これは実際には低レベルのドライバーのデバッグなどに適していますが、このシナリオでも役立ちます。

すべてのメモリを消費しているのがw3wcサービスであることが判明した場合は、Microsoftのまったく新しい Application Insights (またはその他のIISモニタリング)などのツールを使用できます。ツール)が責任を負うアプリケーションプール、Webアプリケーション、またはWebサイトを特定し、その特定のプールのメモリ使用量を制限したり、適切にリサイクルするようにスケジュールしたりできます。

IISは通常、誰にも気付かれないようにプールを循環させることができます(アプリがセッションを処理する方法によっては、カスタムビルドの場合、すべての静的変数がフラッシュされるとセッションが失われる可能性があります)。多くの場合、このような回避策は十分であり、費用のかかるバグの修正を回避できます(免責事項:これは問題を解決する「私のスタイル」ではありませんが、ほとんどの関係者はそのようにしています)。

6
Louis Somers

16Gb RAMを搭載した32ビットオペレーティングシステムは、実質的に12Gbを未使用のままにします。 64ビットOSへのアップグレードを検討する必要があります。

PAEスイッチ(Physical Adress Extension)を使用すると、一時的に修正できる場合があります。

OSが使用できる最大メモリに関する情報とPAEスイッチの情報については、以下を参照してください。

http://msdn.Microsoft.com/en-us/library/windows/hardware/gg487503.aspx

よろしく、

5
Entity_Razer

メモリリークの可能性がありますか?その数のIISプールで可能ですが、彼らが何をしているのかに応じて。

MicrosoftのPOOLMON.EXEで監視が簡単(公式の2003サポートツールから入手)

'reboot-> crash'の間、Powershellスクリプトを1時間ごとに実行します。

$date = get-date -Format ddMMyy-hhmm

.\poolmon.exe -b -n Output-$date.log

#send-mailmessage -smtpserver 10.1.1.11 -to [email protected] -from [email protected] -subject "Poolmon output $date" -attachments "Output-$date.log"

#Extract top offender

$TAG = (Get-Content Output-$date.log)[3]

$Code = $((($TAG -replace '\s+', ' ').split(" "))[1]) 
$Byte = $((($TAG -replace '\s+', ' ').split(" "))[6])

ECHO "$Code,$Byte" >>chart.csv

Chart.CSVは、上位のタグとそのバイト割り当て値を表示します。

Output-$date.logはすべてを表示します。

トップに単一の違反者がいる場合、それはトップに留まり、クラッシュするまで増加し、原因の可能性のある候補者がいます。

また、システムの下のEventvwrで、「不十分なリソース」について言及しているSRVからのイベントを確認してください。

2
Patrick

まず、32ビットオペレーティングシステムで多くのIISワーカープロセスを実行しているサイトです。他のユーザーが述べたように、64ビットオペレーティングシステムは間違いなくパフォーマンスの問題を軽減します。

次に、ストレージに関するエラーが表示されますが、ストレージスペースに関する情報が提供されていません。すべてのサーバーのドライブをチェックして、十分なストレージがあることを確認しましたか?仮想メモリの設定を確認し、ページファイルが存在するドライブに十分なスペースがあることを確認しましたか? VMWareでは、仮想ハードドライブはローカルに、または共有ネットワークストレージにどのように保存されますか?

3番目に、オペレーティングシステムの情報はありませんが、IIS 7が実行されています。サーバー2008を想定しています。サーバーで使用できるサービスパックと修正プログラムがあるかどうかを確認し、リリースノート?それらのうちの1つに修正があるかもしれません。

また、すべてのサーバーでPerfMonを実行し、長い物理ディスクキュー、CPU使用率、ページングファイルの使用率、メモリページフォールト/秒を探すことをお勧めします。また、VMWareの監視を見て、高遅延などのデータストアに問題がないかどうかを確認します。

この問題は、ストレージとの通信の喪失、ページファイルがドライブの制限を超えて増大するなど、さまざまな原因で発生する可能性があります。イベントビューアにイベントの正確なテキストと役立つその他の診断情報を投稿できた場合。グループポリシーの読み込みに問題があり、アプリケーションがいくつかのフープをジャンプせずに読み込まれないという他の問題があるため、この時点でも、破損したオペレーティングシステムを完全に除外することはできません。

0
Mike Naylor

この問題は、仮想マシンで発生しました。無料の沼地標準ライセンスであるため、スペースは限られています。すべてのツールは開発ツールであり、すべてが必要です。

C:ドライブは、Windowsのセキュリティ更新が連続して行われたためにいっぱいになりました。何も削除できませんでした。

Windowsは、おそらくそれが仮想メモリシステムに接続されているため、ファイルをコピーするためにディスク領域が必要であると考えています。私は次の方法で問題を回避しました:

1)Cygwinはすでにシステムにインストールされています

2)ソースから宛先にファイルをcp -rvします

3)ファイルを引用符で囲むことを忘れないでください

それが正常にコピーされるのを見てください。仕事を正しくやりたい場合は、Windowsを使用しないでください。コマンドラインをインストールする必要がある場合は、MobaXtermを使用してください(これは、より小規模なインストールです)。

0
Owl