1)私は自分のアプリケーションに正しいスレッドモデルを選択するために着手し理解しなければならない正しいパス/ステップである質問のタイトルに取り組んでいます。
2) Linux マシンを使用しており、その /proc/cpuinfo ファイルから次の情報が得られます。 a) 物理プロセッサの数:- 2 b) cpucore の数:- 6 c) 仮想プロセッサの数:-24
同じマシン上で (同じアプリケーションの) 約 5 つの JVM プロセスが実行されています。すべてのプロセスには 3 つのスレッドがあり、1 つは新しいイベントをポーリングし (スレッド A)、もう 1 つはデータベースにクエリを実行し (スレッド B、イベントごとに約 20 回のクエリを実行)、もう 1 つはイベント データを発行します (スレッド C)。1 つの LinkedBlockingQueue がスレッド A とスレッド B を接続し、別のリンクがスレッド B とスレッド C を接続します。
各イベントは互いに独立しています。私はこのステートメントを活用したいので、タイプスレッド B のスレッドをさらに導入できるスレッドプールに行きたいと思います。それらはデータを並行して引き出し、スレッド C に送信します。
私が今までやってきたこと: -
1) 大したことはありません。私は正しい戦略を決定しています。2) 次のブログを 読みまし たhttp://codeidol.com/java/java-concurrency/Applying-Thread-Pools/Sizing-Thread-Pools/時間を計算するための待ち時間。同じために、Netbeans プロファイラーをリモートで使用して、スレッド アクティビティとメソッド レベルのインストルメンテーションの両方を分析することにしました。4) ただし、同じ方法では CPU 使用率が表示されないため、Visual VM の [監視] タブを使用して CPU 使用率を分析する予定です。5) スレッドのスケーリングには、より多くの累積スタック メモリが必要になるという事実を認識しています。6) いつでもデータベース接続の数は問題にならないかもしれませんが、同じことを確認する必要があります。
私は正しい道をたどっていますか?特に、JVM プロセスが複数あるのでアドバイスが必要で、分析に関してさらに混乱していますか?
ありがとう