2009-08-25 11 views

答えて

2

これは状況に応じて実際には「依存する」ものです。

  • スレッドは何をしていますか?
  • どのくらいのメモリが必要ですか?
  • ガベージコレクションはどのくらい進んでいますか?
  • どのくらいのメモリがありますか?
  • いくつのCPUがありますか?
  • どのくらい速いのですか?

Java EEアプリケーションサーバーアプリケーションは、スレッド自体を作成しない傾向があります。むしろ、スレッドプールを構成します。私はまだ10個のスレッドを作成する能力が問題を解決し、いくつかのアプリケーションサーバーの制限によって私がそうすることができなくなった状況にはいませんでした。

さまざまなアプリケーションサーバー間でパフォーマンスを比較することは非常に重要ではなく、回答は脆くなる傾向があります。仕事の種類の小さな変化は、異なる答えを生むことができます。

なぜあなたは質問していますか?

+0

私が尋ねる理由はbeacuaseです。私は、Webサービス内で非同期処理をいくつか行いたいと思っています。当然のことながら、元の要求は、アプリケーションサーバーによって定義されたスレッドプールからのスレッドによって処理されますが、そのスレッドは、5つのスレッドを追加して作業を行います。したがって、サーバーが必要とするスレッドの総数=要求を処理するスレッドの数*要求ごとのワーカースレッドの数+一定数のバックグラウンドスレッド。その数はかなり大きくなる可能性があります。私は何かを実装する前にJVMがこのようなシナリオでどのように動作するのか疑問に思います。逐次処理と –

+0

1)スレッドは、Webサービス要求を処理し、内部データベースと他のWebサービス 2 + 3にアクセスしている)今日、彼らが利用できる5〜6メガバイト/リクエスト 4)メモリーを過ごす:2GB 5)1つのCPU 6)が異なりバックエンド・システムの応答 –

+0

多くのアプリケーション・サーバーでは、制御された方法で非同期ジョブ・キューなどの追加ワーカー・スレッドを何らかの方法で生成する方法を設計しました。これらを使用すると、通常のサービス・スレッドと追加のワーカー・スレッド。 Webサービスが非常に重い作業をしていて、 "submitJob、getJobResult"オペレーションのペアがうまくいくかもしれません。 – djna

0

これは本当にあなたが純粋にJava VMから見つけることができるものではありません。これは、VM固有のものよりもハードウェア/ OSの制限のほうが多いです。この回答を見つける最も良い方法は、多数のスレッドでテストし、パフォーマンスの低下をどこから見始めるかを確認することです。 this devx discussionも参照してください。

+0

ありがとうございました。リンクは役に立ちました。 –

1

これは実際に実行している特定のハードウェア(CPU数、メモリ量など)に依存し、OS(SolarisとWindows)にも依存します。これは、基礎となるスレッドがOS-スレッド管理を提供する。各スレッドが消費するリソースの量はアプリケーションに依存するため、アプリケーションとアプリケーションサーバー自体にも依存します。

関連する問題