solr jvm优化

solr8.5.0  启动时添加命令或者  Solr bin路径下 solr.in.cmd 文件添加配置。配置文件中已经存在的配置需要去掉开头的REM注释

set GC_TUNE=-XX:SurvivorRatio=4(solr默认值, eden: from survivor: to survivor=4:1:1)

set GC_TUNE=%GC_TUNE% -XX:TargetSurvivorRatio=90


set GC_TUNE=%GC_TUNE% -XX:MaxTenuringThreshold=8(solr默认值,对象年龄计数器,MinorGc每存活一次加1)


set GC_TUNE=%GC_TUNE% -XX:+UseConcMarkSweepGC(CMS收集器也被称为短暂停顿并发收集器。它是对年老代进行垃圾收集的。CMS收集器通过多线程并发进行垃圾回收,尽量减少垃圾收集造成的停顿。)
set GC_TUNE=%GC_TUNE% -XX:+UseParNewGC(设置年轻代为多线程收集。可与CMS收集同时使用。在serial基础上实现的多线程收集器。如果该标志未设置,JVM会根据并行收集器中的-XX:ParallelGCThreads参数的值来计算出默认的并行CMS线程数。该公式是ConcGCThreads = (ParallelGCThreads + 3)/4。因此,对于CMS收集器, -XX:ParallelGCThreads标志不仅影响“stop-the-world”垃圾收集阶段,还影响并发阶段。)


set GC_TUNE=%GC_TUNE% -XX:ConcGCThreads=4(CMS周期的所有阶段都以4个线程来执行。尽管更多的线程会加快并发CMS过程,但其也会带来额外的同步开销。)
set GC_TUNE=%GC_TUNE% -XX:ParallelGCThreads=4(表示JVM在进行并行GC的时候,用于GC的线程数)
set GC_TUNE=%GC_TUNE% -XX:+CMSScavengeBeforeRemark(执行CMS remark之前进行一次youngGC,这样能有效降低remark的时间)
set GC_TUNE=%GC_TUNE% -XX:PretenureSizeThreshold=64m(对象超过64mb的时候,直接在old区分配)
set GC_TUNE=%GC_TUNE% -XX:+UseCMSInitiatingOccupancyOnly(使用手动定义初始化定义开始CMS收集,禁止hostspot自行触发CMS GC)
set GC_TUNE=%GC_TUNE% -XX:CMSInitiatingOccupancyFraction=50(使用cms作为垃圾回收使用70%后开始CMS收集)

set GC_TUNE=%GC_TUNE% -XX:CMSMaxAbortablePrecleanTime=6000(JDK 5.0+、6.0+的版本中有可能会由于JDK的bug29导致CMS在remark完毕后很久才触发sweeping动作。对于这种状况,可通过设置-XX: CMSMaxAbortablePrecleanTime=5(单位为ms)来避免)

posted @ 2022-08-24 10:46  zwbsoft  阅读(155)  评论(0编辑  收藏  举报