2012-03-20 19 views
4

Tomcatで動作するJava Web/SIPアプリケーションがあります。このアプリケーションのサイズは、仮想化された環境で4GBのRAMと4つのvCPUを使用して、Windows 2003上で1,000同時セッションを実行するためのサイズでした。Windows 2003でのJava WebアプリケーションのパフォーマンスとWindows 2008の比較

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

ここでは以下の質問があります。

  1. 64ビット環境で32ビットアプリケーションを実行すると、ここで問題が発生する余分なCPU /メモリが必要ですか?

  2. んWindows 2008のための64ビット環境はより多くのCPUは、2003年

+0

記号が欠落しているにもかかわらず、私は64ビットシステムがより多くのリソースを浪費しているため、より多くのメモリを最初に試してみます。 Javaバイトコードは32ビットと64ビットで同じなので、64ビットJavaでTomCat 7、64ビットを試すことができます。 –

+0

メモリを追加しても影響はありませんが、CPUを追加するとパフォーマンスに影響があります。混乱の状態で。私は、2008年がより多くのリソースを必要とし、リソースを増やすという事実を活用して、最適化またはライブするためにアプリケーションに焦点を当てるべきです。 2008年のWindows 2008の最適化またはTomcatの最適化に焦点を当てることはオプションですか? はいの場合は、どこでそれに対して鉛を得ることができますか? –

答えて

0
  1. ない特にに比べる必要が勝つ2003と勝利の性能差はあります。
  2. はい。時にはそれは非常に重要です。私は、ワープスピードで働いていたプログラムでは、あらゆる種類の遅延を見ています。
  3. 64ビットのためにはい、そうではありません。
+0

入力をいただきありがとうございます。ポイント2、いくつかの比較マトリックスなどを証明するためにデータポイントを提供することができますか? また、誰がCPUを食べているのか、大きな犯人は誰ですか。 1. 64ビットアーキテクチャ。 2.現在稼働しているWindows 2008は、OSを維持するためのツールが増えているかもしれません。 3. 32ビットアプリケーションであるtomcat 5.5.33。 64ビットOSで動作します。 4. 32ビットで64ビットのenvで実行されているJRE。 5. My app。 Windows 2008への移行後に20〜25%のパフォーマンス低下が見られますが、VM環境で追加のリソースが必要であることを証明するためには強いデータポイントが必要です。 –

1

いつも同じような状況が続き、32ビットのアプリケーション(TomcatベースのJ2EEアプリケーション)を64ビットマシンに移動しようとしました。あなたは直面しているように結果を観察します。

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

はのは1

がここでの問題を作成して、余分なCPU /メモリーを取る64の環境で32ビットアプリケーションを実行しているんでご質問の1を見てみましょう。

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

は主に はWoW64はそれ

  1. は、32ビット命令をエミュレートし、2つの方法がありますがあります。このは計算上非常に高価ですとおそらくCPU使用率スパイクの原因です。これは、一般にIntel Itanium(IA-64)ベースのプロセッサで使用される場合です。

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

ウィン2003とのWin 2008

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

んWindows 2008のための64ビット環境では、より多くのCPUは、2003年

はいと比較が必要です。上記の@EJPのように、more things to offerです。より優れたOSには優れたハードウェアが必要です。特定のアプリケーションにWin 2008固有の機能が必要な場合とそうでない場合があります。これは、32ビットから64ビットに移行する必要がある理由を呼び出す必要がある理由です。同じフォーラムにsimilar postさんと載っています。

私はオプションがあるかどうかわかりませんが、(プラットフォーム固有のライブラリを使用していない場合は)run the same code without rebuildingを64ビットTomcatで実行できます。

0

SIPアプリケーションとJavaの以前のインストールは、新しいものがまだないうちに最適化されたと思います。 最新のSP for Windows 2003と2008年の最新SP(Vistaベース)の間にネットワークとJavaのパフォーマンスの違いはありませんが、Win 2008 R2はよりインテリジェントなCPU親和性のため、Javaで高速です。 基本的に、私はあなたのJavaを見て、できるならば64ビットJavaを実行していることを確認します。それは "-server"スイッチで実行されており、ガベージコレクタにはオプションがあります。 -XX:+ UseConcMarkSweepGC -XX:+ UseParNewGC -XX:NewSize = 128m、java opts set JAVA_OPTS = -Xmx3000M -serverもチェックします。

また、最新のJavaバージョンを実行していることを確認してください。システムにWindows Updateを実行しました。ドライバを含むだけでなく、ビジュアライゼーションソフトウェア、BIOS、BMCおよびストレージファームウェアもアップデートしました。

最後に、実際にJavaがピークに達していること、LAN接続(ping)がパケットをドロップしていないこと、マシンの電源がオフになっていることを確認してください。

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

パブリッククラウドを使用している場合、これは設定の問題ではないかもしれませんが、単にクラウドサーバーが別の仮想サーバーとCPUを共有しているため、アプリケーションが停止しています。

+0

ps。それがネットワークアプリケーションなら、vmホストとゲストのネットワークポートのバッファを増やしてください。本当に役立ちます。できれば、10Gbpsのリンクを使用してください。まだ動作しない場合は、設定に関する詳細を提供してください。 – Andrew

関連する問題