私のクライアントには、ESXi5.1で実行されている仮想Server2008R2ターミナルサーバーがあります。
このサーバーは約4か月間運用されていましたが、ログインしたユーザーが断続的に遅くなったり、応答しなくなったりします。この問題が発生した場合iexplore.exe
プロセス(32ビットおよび64ビット)は非常に高いCPUとRAMを使用しています。
スクリーンショット:Windowsタスクマネージャー:[プロセス]タブ
スクリーンショット(最初のスクリーンショットとは異なる時間に撮影):Windowsタスクマネージャー:[パフォーマンス]タブ
(これらの2つのスクリーンショットは別々の時間に撮影されました)
この問題を恒久的に解決する方法についてのアイデアはありますか?
クライアントが使用するターミナルサーバーは多数ありますが、これはVMwareで展開した最初のTSです。他のターミナルサーバーは、XenServerまたは物理サーバーの下にあります。これはVMwareの問題でしょうか?
つまり、同じワークロードが与えられた場合、ゲストOSは、実行されているハイパーバイザーに基づいて、大幅に異なる量のメモリを使用するということですか?私はそれを買うとは思わない...
私が見ている明らかな問題の1つは、Internet Explorerが明らかにターミナルサーバーで非常に頻繁に使用されるアプリケーションであるということですが、InternetExplorerの32ビットインスタンスと64ビットインスタンスを組み合わせて使用しています。これに伴う問題は、複数のセッションが同じアプリケーションを起動しているときにターミナルサーバーに通常役立つコピーオンリード/ライトメモリおよびその他の共有メモリ技術は、それらの最適化技術を失うことです。 32ビットバージョンと64ビットバージョンの間で共有することはできません。 32ビットまたは64ビットのInternetExplorerですべてのユーザーを標準化した場合、全体的なメモリ使用量は少なくなります。
アプリケーションの実行
ユーザーのログオン後、デスクトップ(またはシングルアプリケーションモードの場合はアプリケーション)がユーザーに表示されます。ユーザーが実行する32ビットアプリケーションを選択すると、マウスコマンドがターミナルサーバーに渡され、ターミナルサーバーが選択したアプリケーションを新しい仮想メモリスペース(2 GBアプリケーション、2 GBカーネル)で起動します。ターミナルサーバー上のすべてのプロセスは、可能な限りカーネルモードとユーザーモードでコードを共有します。プロセス間でコードを共有するために、Windows NT仮想メモリ(VM)マネージャはコピーオンライトページ保護を使用します。複数のプロセスが同じメモリコンテンツの読み取りと書き込みを行う場合、VM managerはコピーオンライトページ保護をメモリ領域に割り当てます。プロセス(セッション)は同じメモリコンテンツを使用します。書き込み操作が実行されるまで、VMマネージャーは物理ページフレームを別の場所にコピーし、プロセスの仮想アドレスを更新して新しいページの場所を指すようにし、ページを次のようにマークします。読み取り/書き込み。コピーオンライトは、ターミナルサーバーで実行されているアプリケーションにとって非常に便利で効率的です。
Microsoft WordなどのWin32ベースのアプリケーションが1つのプロセス(セッション)によって物理メモリにロードされると、コピーオンライトとしてマークされます。新しいプロセス(セッション)もWordを呼び出す場合、アプリケーションはすでにメモリにロードされているため、イメージローダーは新しいプロセス(セッション)を既存のコピーにポイントするだけです。バッファとユーザー固有のデータが必要な場合(たとえば、ファイルへの保存)、必要なページが新しい物理メモリの場所にコピーされ、個々のプロセス(セッション)の読み取り/書き込みとしてマークされます。 VM managerは、このメモリスペースを他のプロセスから保護します。ただし、ほとんどのアプリケーションは共有可能なコードであり、物理メモリ内のコードのインスタンスは、何度であっても1つしかありません。実行します。
>ターミナルサーバー環境で32ビットアプリケーションを実行することをお勧めします(必須ではありません)。32ビットアプリケーション(Win32)を使用すると、コードを共有でき、マルチユーザーセッションでより効率的に実行できます。 = Windows NTでは、Win16アプリケーションごとに仮想MS-DOSベースのコンピュータ(VDM)を作成して、16ビットアプリケーション(Win16)をWin32環境で実行できます。すべての16ビット出力はWin32呼び出しに変換され、必要なアクションを実行します。 Win16アプリは独自のVDM内で実行されているため、複数のセッションのアプリケーション間でコードを共有することはできません。 Win16呼び出しとWin32呼び出しの間の変換も、システムリソースを消費します。ターミナルサーバー環境でWin16アプリケーションを実行すると、同等のWin32ベースのアプリケーションの2倍のリソースを消費する可能性があります。