Solaris 9上的Java 8 GC线程,多JVM环境,需要确定线程的边界

时间:2016-02-04 21:29:23

标签: java multithreading garbage-collection solaris

我们正在从Weblogic 9迁移到Weblogic 12c。 计划是将JVM移动到“并发”设计,而不是每个JVM的VM,这是我们JBoss服务器的供应商推荐标准。 因此,我们将使用Sunfires或其他一些16核(8个物理,超线程或等效)。内存不是问题。问题是响应性,以及GC中使用的线程。

使用像“-XX:ConcGCThreads =”和“-XX:ParallelGCThreads =”这样的标志似乎是允许这个Solaris Local Zone的最佳方法,我们已经从全局区域中划分出来,将线程限制在实用的范围内。 但是我们在本地区域会有多个JVM - 最多可能是40个。这必须在8月份完成,还没有人开始 - 你可以看到将会发生什么。

问题: 在N个处理器所描述的系统中,如果X JVM并发,我如何确定一个算法来固定CMS GC的GC线程数? (我们现在正在离开G1GC和吞吐量来管理自己,但这里的答案也可能会改变这种情况。)

我读过这个帖子,没有好的答案。 N + 1似乎有风险,因为有大量的JVM竞争资源。 (那是从2010年开始) What is a good ratio of Java threads to CPUs on Solaris?

JVM是否看到了CPU的本地区域分配? JVM是否会查看全局区域的所有CPU? 如果我们有N = 16,比方说,我应该人为地限制分配,将我们的线程设置为N / 2或其他什么? 因为我抓住的测试程序表明,对于2 GB堆,它是在Solaris机箱上给出的,它产生了85个GC线程。没有任何意义,除非它为每个GC生成并终止了线程,而这只是一个总数...那是一个新的低端机器,但是...... 85个线程?

我计划明天在那台机器上进行并行JVM测试,希望我能在这里得到一些帮助。现场的中小企业告诉我们测试每个应用程序......这将是孤立的,然后它们将在本地区“结婚”,我担心PROD中的灾难。

0 个答案:

没有答案