4

Tomcat で動作する Java Web / SIP アプリケーションがあります。このアプリケーションは、Windows 2003 で 1000 の同時セッションを実行できるようにサイズ設定されており、仮想化環境で 4 GB の RAM と 4 つの vCPU を備えています。

現在、アプリケーションは Windows 2008 に移行されています。Tomcat はまだ 32 ビットであり、アプリケーションは 32 ビット Java でコンパイルされているため、32 ビット アプリケーションです。このセットアップで、私の 2008 年のパフォーマンス。テストは、Windows 2003 で使用していたのと同じように機能していません。CPU 使用率がピークに達し、多くの通話がドロップされています。

ここで次の質問があります。

  1. 64 環境で 32 ビット アプリケーションを実行すると、ここで問題を引き起こしている追加の CPU / メモリが必要ですか。

  2. Win 2003 と Win 2008 でパフォーマンスに違いはありますか?

  3. Windows 2008 は 64 ビット環境のため、2003 と比較してより多くの CPU を必要としますか?

4

3 に答える 3

1

以前にも同様の状況があり、32 ビット アプリ (Tomcat ベースの J2EE アプリ) を 64 ビット マシンに移行しようとしました。あなたが直面している結果を観察します。

ところで、64ビットOSに移行した理由については言及していません:)。

あなたの質問を一つずつ取り上げましょう

64 環境で 32 ビット アプリケーションを実行すると、ここで問題を引き起こしている追加の CPU / メモリが必要ですか。

一般的にはい。ただし、プロセッサのアーキテクチャにも依存します。これを理解するには、Windows が 64 ビット マシンで 32 ビット アプリケーションを実行する方法を見てください。WoW64 ( Windows 64 ビット上の Windows 32 ビット)と呼ばれる 64 ビット OS 内のサブシステムがあります。

主にWoW64が行う方法は 2 つあります。

  1. 32 ビット命令のエミュレート。これは計算コストが非常に高く、おそらく CPU 使用率の急上昇の原因です。これは通常、Intel Itanium (IA-64) ベースのプロセッサを使用する場合に当てはまります。

  2. プロセッサを 64 ビット モードから 32 ビット モードに切り替えます。ここで、32 ビット アプリケーション スレッドを実行する必要がある場合は常に、プロセッサは32 モード (互換モード) に切り替えられ、その後 64 ビット モードに戻ります。これは、以前のエミュレーション メカニズムよりも比較的高速です。

Win 2003 と Win 2008 でパフォーマンスに違いはありますか?

これは非常に主観的です。使用するハードウェアの種類によって異なります。64 ビット OS とハードウェアを使用している場合でも、ハードウェアの種類、マザーボード CPU などに大きく依存します。64 ビット OS は、アドレス空間などの制限により 32 ビット OS とマシンでは使用できない優れたハードウェアを活用するように設計されています。

Windows 2008 は 64 ビット環境のため、2003 と比較してより多くの CPU を必要としますか?

はい。上記の @EJP のように、提供できるものは他にもあります。より有能な OS には、優れたハードウェアが必要です。特定のアプリケーションが Windows 2008 固有の機能を必要とする場合と必要としない場合があります。それが、なぜ 32 ビットから 64 ビットに移行する必要があるのか​​について電話をかける必要がある理由です。同じフォーラムに 同様の投稿があります。

ところで、オプションがあるかどうかはわかりませんが、64ビットのTomcatで(プラットフォーム固有のライブラリを使用していない場合)再構築せずに同じコードを実行できます。

于 2012-04-04T15:51:20.183 に答える
0

SIP アプリと Java の以前のインストールは最適化されていましたが、新しいものはまだ最適化されていないと思います。Windows 2003 の最新 SP と 2008 (Vista ベース) の最新 SP の間でネットワークと Java のパフォーマンスに違いはありませんが、Windows 2008 R2 はよりインテリジェントな CPU アフィニティにより Java を使用すると高速になり、VM でも動作します。基本的に、私はあなたのJavaを調べます。可能であれば64ビットJavaを実行していること、「-server」スイッチで実行していること、およびガベージコレクターに-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XXなどのオプションがあることを確認します:NewSize=128m、java opts set JAVA_OPTS=-Xmx3000M -server も確認してください。

また、最新の Java バージョンを実行していることを確認してください。Windows をシステムに更新し、ドライバーを含め、視覚化ソフトウェア、BIOS、BMC、およびストレージ ファームウェアを更新しました。

そして最後に、タスク マネージャーで本当に Java のピークが発生しているかどうか、LAN 接続 (ping) がパケットをドロップしていないこと、マシンの BIOS で電源管理がオフになっていることを確認します。

Win 2008 R2 - win 7 ベースにアップグレードすることをお勧めします。

パブリック クラウドを使用している場合、これは設定の問題ではない可能性がありますが、単にクラウド サーバーが別の仮想サーバーと CPU を共有しているため、アプリがスタックしています。

于 2012-04-08T20:08:55.693 に答える
0
  1. 特にありません。
  2. はい。時にはそれは非常に重要です。ワープ速度で動作していたプログラムにあらゆる種類の遅延が見られます。
  3. はい、しかし 64 ビットのためではありません。
于 2012-03-20T07:41:46.117 に答える