Windows Serverでページ プール割り当てエラーが記録されるときの対処

部屋のサーバでリソース不足という、非常に情けない凡ミスなのでメモ。

Windowsの32bit版は、ページプールの上限が以下のように設定されています。
Windows XP:最大491MB
Windows Server 2003:最大650MB
これらの値は最大値まで自動拡張されず、起動時にOSが最適な値を決めて使用します。
Windows Vista以降の32bit版では改善され、仮想メモリの最大2GBまで自動拡張されます。
また、64bit版ではより大きな値を設定するため問題ないです。

その状態でも通常の使用は問題ないんですが、デバイスが多数接続されていたり、ファイルサーバなど読み書きや負荷が高い場合は、リソースが枯渇してしまいます。
その場合、次のようなエラーがイベントログへ記録されます。
windows_server_2003_srv_2020.jpg

イベントの種類: エラー
イベント ソース: Srv
イベント カテゴリ: なし
イベント ID: 2020
日付: 2011/05/05
時刻: 10:57:55
ユーザー: N/A
コンピュータ: SW011
説明:
プールが空であるため、サーバーはシステムのページ プールから割り当てることができませんでした。
この状態が長く続くと、次第にレスポンスが悪くなり、最終的にはOSが反応しなくなります。

対処方法としては、Microsoftより次の文章が公開されています。
サーバーがシステム ページ プールからメモリを割り当てることができない(KB312362)
要は、メモリを沢山積んでいる場合(4GB以上など)は、ページプールを最大値にするというもの。
設定にはレジストリを編集する必要がありますが、次のコマンドを叩けば簡単に設定可能。
内容:PagePool_Regadd.txt

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v PagedPoolSize /t REG_DWORD /d 4294967295 /f>nul 2>&1
REG ADD "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" /v PoolUsageMaximum /t REG_DWORD /d 60 /f>nul 2>&1


う~ん、知識としては知っていたんですが、部屋のファイルサーバには設定していませんでした。
そもそも1人なので、そこまでページプールを使用しないと思っていたんですけど。
標準的な設定やチューニングは、どんな環境でも行っておいた方が良いですね。

| コメント(2) | トラックバック(0) |
■Yahoo!オークション おすすめ商品■
Web Services by Yahoo! JAPAN

トラックバック(0)

トラックバックURL: http://type-y.com/mt/mt-tb.cgi/1621

コメント(2)

確かこの手のメモリは処理数というよりは起動時間で徐々に減っていくんですよね・・・

ファイルサーバとかはそういう意味で64bit化した方が良い対象だったはず。
デスクトップヒープとか色々32bitは起動し続けるのにつらい制限がありますからねぇ・・・

そうです・・・、減っていくのです・・・。
徐々に減っていき、調整処理(ガベージコレクション)が80%で走るはずなんですが、
その処理がうまくいかずに駄目になることが多いです。

ファイルサーバは64bitの方が良いですね。
ちょっとしたテスト用環境を、そのまま使っていたので今回は死んでしまいましたが。
今後は、Windows Server 2008 R2など64bit OSが主流なので
こういった制限もなくなります。

コメントする