我在Datastax-enterprise的Cassandra/Solr包中经历了长时间的GC暂停(> 10秒)。在监视了几天之后,我发现只有当CMS Perm的GC发生时才会发生这种情况,如图表所示。当PermGen GC发生时,长GC发生在图表的每一个拐点。每次Perm启动时,都会有一个长时间的暂停,导致客户会话超时!
堆GC是正常的,没有暂停,只有和总是得到长暂停在非堆Perm,这总是发生在服务器在非高峰时间。
DSE使用的JVM选项:
-ea -javaagent:/usr/local/dse/resources/cassandra/lib/jamm-0.2.5.jar
-XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42
-Xms16384M -Xmx16384M -Xmn5461M -XX:+HeapDumpOnOutOfMemoryError
-Xss180k -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled
-XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=1
-XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly
-Djava.net.preferIPv4Stack=true -Dcassandra.load_ring_state=false
-Dcassandra-foreground=yes -Dsearch-service=true
-Dtomcat.logs=/var/log/dse/tomcat -DName=SI2_DSE
-Ddse.solr.data.dir=/data/solrIndexRamDisk
-Djava.library.path=/usr/local/dse/resources/hadoop/native/Linux-amd64-64/libJVM信息
堆信息
VM服务器信息
发布于 2014-03-11 01:28:03
如果您可以使用直接Solr,您可以尝试Heliosearch,它试图解决GC暂停使用堆外数据的问题。
http://heliosearch.org/off-heap-filters/
发布于 2014-02-20 06:26:50
使用-XX:+CMSClassUnloadingEnabled,它允许CMS收集器在oldgen期间扫描permgen,并卸载不再使用的类。链接:http://blog.redfin.com/devblog/2012/06/cmsclassunloadingenabled-at-redfin.html#.UwWeO4XqPK0
使用100或200 MB大小进行烫发,而不是使用60 MB。
试试看,如果它解决了你的问题,你可以分享它。
https://stackoverflow.com/questions/21763654
复制相似问题