1)我正在研究我的问题的标题,这是我应该采取和理解的正确路径/步骤,以便为我的应用程序选择正确的线程模型。
2) 我有一台 Linux 机器,其 /proc/cpuinfo 文件为我提供以下信息 a) 物理处理器数量:- 2 b) cpucores 数量:- 6 c) 虚拟处理器数量:-24
我在同一台机器上运行了大约 5 个 JVM 进程(同一个应用程序)。每个进程有 3 个线程,一个轮询新事件(线程 A),一个查询数据库(线程 B,每个事件大约 20 个查询),一个发布事件数据(线程 C)。1个LinkedBlockingQueue连接线程A和线程B,另一个连接线程B和线程C。
每个事件都独立于另一个。我想利用这个语句,因此想去线程池,可以引入更多线程 B 类型的线程,它们并行提取数据并将它们发送到线程 C。
到目前为止我所做的:-
1)没什么,我正在决定正确的策略。2)我浏览了以下博客 http://codeidol.com/java/java-concurrency/Applying-Thread-Pools/Sizing-Thread-Pools/ 3)那里描述的公式要我计算 N/C,比率等待时间来计算时间。同样,我决定远程使用 Netbeans 分析器并分析线程活动和方法级别的检测。4) 但是同样没有给我 CPU 使用率,所以我打算使用 Visual VM 的监视器选项卡来分析 CPU 使用率。5) 我知道线程的缩放需要更多的累积堆栈内存这一事实。6)随时数据库连接的数量可能不是问题,但我必须检查一下。
我是否走在正确的道路上?特别是我需要建议,因为有多个 JVM 进程,所以我在分析方面变得更加困惑?
谢谢