Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ

ターミナル・サービスでアプリケーションが正しく動かない

解説をスキップして操作方法を読む

デジタルアドバンテージ
2004/08/07
 
対象OS
Windows Server 2003
Windows Server 2003のターミナル・サービスを利用してリモートから接続し、アプリケーションを実行したとき、画面が崩れるなどのエラーが発生することがある。
ターミナル・サービス・セッションに割り当てられるデフォルトのセッション用メモリ不足が原因となっている可能性がある。この場合はレジストリの値を増加させることで問題を回避できる。
 
解説

 リモートから遠隔地にあるコンピュータのWindowsデスクトップに接続して、あたかもローカル・デスクトップのように利用できるターミナル・サービスは便利な機能だ。サーバのリモート・メンテナンスはもちろん、自宅のWindowsコンピュータから、会社のデスクトップ・コンピュータに接続すれば、会社のWindows環境を自宅からそっくり使うことができる(もちろん、会社のデスクトップにターミナル・サービスで接続できればの話だが)。

Windows 2003ターミナル・サービスの詳細

 Windows Server 2003は標準でこのターミナル・サービス機能を備えている。コントロール・パネルの[プログラムの追加と削除]にある「Windowsコンポーネント ウィザード」から、「ターミナル サーバー」を選択してインストールすればよい。Windows Server 2003のターミナル・サービスの詳細については関連記事を参照されたい。

 しかし、ターミナルで接続したアプリケーションが使用するターミナル・サービス・セッション用のメモリが不足して、アプリケーションの動作が不正になる場合がある。不足するのは、メニューやフォント、ウィンドウなどといったグラフィカル・ユーザーインターフェイス要素(GUIオブジェクト)を保存するためのメモリ領域で、メモリが不足するとGUIオブジェクトが正しく割り当てられず、画面表示などが不正になる。Windows Server 2003へのリモート接続を利用していて、画面が崩れるなどの障害が発生したときには、この問題を疑ってみるべきだ。この場合には、レジストリの設定値を変更して、ターミナル・サービス・セッションに割り当てられるメモリ・サイズを増加することで問題を解消できる。


操作方法

 ターミナル・サービス・セッションに割り当てられるデフォルトのメモリ領域を増やすには、レジストリの値を変更すればよい。

 変更するのは、以下のサブ・キーにある、下表のエントリである。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

レジストリ・エントリ 内容 デフォルト値
SessionViewSize デスクトップ・ヒープのサイズをメガバイト 単位で指定する 20Mbytes
SessionPoolSize セッションのページ・プールをメガバイド単位で指定する 16Mbytes(32Mbytes)
リモート・サービス・セッション用メモリを増加するためのレジストリ・エントリ

 このようにリモート・サービス用のセッション・メモリの設定用エントリには、SessionViewSizeとSessionPoolSizeの2つがある。このうちSessionViewSizeには、デスクトップ・ヒープのサイズをメガバイト単位で指定する。デフォルトでは20Mbytesが指定されている。前述したとおり、メニューやフォント、アイコンなどといったGUIオブジェクトが保存されるのがデスクトップ・ヒープである。

TIPS:デスクトップ・アプリケーション・ヒープ不足エラーに対処する方法

 一方のSessionPoolSizeには、セッションに割り当てられるページ・プールをメガバイト単位で指定する。通常、デフォルト値は16Mbytesだが、コンピュータの搭載メモリが十分にある場合はWindows Server 2003によって32Mbytesが割り当てられる場合もある。ページ・プールは、サービスやアプリケーションが使用するメモリのうち、ディスクにページング可能なものが割り当てられる。このメモリは、主にグラフィックス・ドライバの割り当てなどに使われる。

 デフォルトのセッション・メモリを増加するにはこれらのDWORD値を適当な値に増やせばよい。

[注意]

レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリ エディタの操作は慎重に行うとともに、あくまでご自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。

 設定する値に絶対的な制限はない。ただしマイクロソフトのガイドラインによれば、SessionViewSizeとSessionPoolSizeの合計値が512Mbytes以下にすることが望ましいとしている。

 ただしターミナル・サービス・セッションごとに指定したメモリが割り当てられるので、コンピュータの搭載メモリに照らしてあまりに大きな値にすると、Windows Server 2003システムやほかのアプリケーションが利用するメモリ領域を圧迫したり、ターミナル・サービスの同時接続可能セッション数を圧迫したりする可能性がある。用途にもよるが、段階的に値を増加させながら、エラーが発生しなくなる値を見極めるのがよいだろう。End of Article

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間