You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2018/06/29 19:06:00 UTC

[jira] [Commented] (CASSANDRA-6541) New versions of Hotspot create new Class objects on every JMX connection causing the heap to fill up with them if CMSClassUnloadingEnabled isn't set.

    [ https://issues.apache.org/jira/browse/CASSANDRA-6541?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16528103#comment-16528103 ] 

ASF GitHub Bot commented on CASSANDRA-6541:
-------------------------------------------

Github user jasobrown commented on a diff in the pull request:

    https://github.com/apache/cassandra/pull/236#discussion_r199253772
  
    --- Diff: conf/jvm11.options ---
    @@ -0,0 +1,89 @@
    +###########################################################################
    +#                            jvm11.options                                #
    +#                                                                         #
    +# See jvm.options. This file is specific for Java 11 and newer.           #
    +###########################################################################
    +
    +#################
    +#  GC SETTINGS  #
    +#################
    +
    +
    +
    +### CMS Settings
    +#-XX:+UseParNewGC
    +#-XX:+UseConcMarkSweepGC
    +#-XX:+CMSParallelRemarkEnabled
    +#-XX:SurvivorRatio=8
    +#-XX:MaxTenuringThreshold=1
    +#-XX:CMSInitiatingOccupancyFraction=75
    +#-XX:+UseCMSInitiatingOccupancyOnly
    +#-XX:CMSWaitDuration=10000
    +#-XX:+CMSParallelInitialMarkEnabled
    +#-XX:+CMSEdenChunksRecordAlways
    +## some JVMs will fill up their heap when accessed via JMX, see CASSANDRA-6541
    +#-XX:+CMSClassUnloadingEnabled
    +
    +
    +
    +### G1 Settings
    +## Use the Hotspot garbage-first collector.
    +-XX:+UseG1GC
    +-XX:+ParallelRefProcEnabled
    +
    +#
    +## Have the JVM do less remembered set work during STW, instead
    +## preferring concurrent GC. Reduces p99.9 latency.
    +-XX:G1RSetUpdatingPauseTimePercent=5
    +#
    +## Main G1GC tunable: lowering the pause target will lower throughput and vise versa.
    +## 200ms is the JVM default and lowest viable setting
    +## 1000ms increases throughput. Keep it smaller than the timeouts in cassandra.yaml.
    +-XX:MaxGCPauseMillis=500
    +
    +## Optional G1 Settings
    +# Save CPU time on large (>= 16GB) heaps by delaying region scanning
    +# until the heap is 70% full. The default in Hotspot 8u40 is 40%.
    +#-XX:InitiatingHeapOccupancyPercent=70
    +
    +# For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores.
    +# Otherwise equal to the number of cores when 8 or less.
    +# Machines with > 10 cores should try setting these to <= full cores.
    +#-XX:ParallelGCThreads=16
    +# By default, ConcGCThreads is 1/4 of ParallelGCThreads.
    +# Setting both to the same value can reduce STW durations.
    +#-XX:ConcGCThreads=16
    +
    +
    +### JPMS
    +
    +-Djdk.attach.allowAttachSelf=true
    +--add-exports java.base/jdk.internal.misc=ALL-UNNAMED
    +--add-opens java.base/jdk.internal.module=ALL-UNNAMED
    +--add-exports java.base/jdk.internal.ref=ALL-UNNAMED
    +--add-exports java.base/sun.nio.ch=ALL-UNNAMED
    +--add-exports java.management.rmi/com.sun.jmx.remote.internal.rmi=ALL-UNNAMED
    +--add-exports java.rmi/sun.rmi.registry=ALL-UNNAMED
    +--add-exports java.rmi/sun.rmi.server=ALL-UNNAMED
    +--add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED
    +
    +
    +### GC logging options -- uncomment to enable
    +
    +# Java 11 (and newer) GC logging options:
    +# See description of https://bugs.openjdk.java.net/browse/JDK-8046148 for details about the syntax
    +# The following is the equivalent to -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M
    +#-Xlog:gc=info,heap*=trace,age*=debug,safepoint=info,promotion*=trace:file=/var/log/cassandra/gc.log:time,uptime,pid,tid,level:filecount=10,filesize=10240
    --- End diff --
    
    minor nit: `filesize=10240` is the file size in bytes. change to `10485760` if you actually want 10MB files.


> New versions of Hotspot create new Class objects on every JMX connection causing the heap to fill up with them if CMSClassUnloadingEnabled isn't set.
> -----------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-6541
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6541
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Configuration
>            Reporter: jonathan lacefield
>            Assignee: Brandon Williams
>            Priority: Minor
>             Fix For: 1.2.16, 2.0.6, 2.1 beta2
>
>         Attachments: dse_systemlog
>
>
> Newer versions of Oracle's Hotspot JVM , post 6u43 (maybe earlier) and 7u25 (maybe earlier), are experiencing issues with GC and JMX where heap slowly fills up overtime until OOM or a full GC event occurs, specifically when CMS is leveraged.  Adding:
> {noformat}
> JVM_OPTS="$JVM_OPTS -XX:+CMSClassUnloadingEnabled"
> {noformat}
> The the options in cassandra-env.sh alleviates the problem.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org