Determine correct JAVA_OPTS for Java 8 runtime
Description
Environment
Test Plan
Activity

Beth Kirschner July 15, 2015 at 11:17 AM
Additionally, Dave says we could delete the sun.lang.ClassLoader.allowArraySyntax property.

Beth Kirschner July 15, 2015 at 11:09 AM
Dave will be writing up a JIRA regarding CtStats work, Beth will send recommendations on settings changes to AWI (pending tuning during load tests).
Recommendation:
1. remove XX:MaxPermSize; remove XX:PermSize; (no longer supported)
2. Determine new MaxMetaspaceSize via load testing
References:
http://stackoverflow.com/questions/18339707/permgen-elimination-in-jdk-8
https://dzone.com/articles/java-8-permgen-metaspace

David Haines July 15, 2015 at 10:16 AM
Much of the memory data collected by CTStats will be obsolete. Splunk may be a suitable replacement for some/all of it provided the data is sampled with sufficient frequency.

David Haines July 15, 2015 at 9:58 AM
Java 8 uses a new memory configuration. The current out of the box recommendation for Sakai is:
"-Xmx1028m -XX:MaxMetaspaceSize=512m" It is unlikely these are appropriate for CTools. We should expect to have to spend load testing time to tune the new memory settings.

David Haines July 15, 2015 at 9:33 AMEdited
Per ( https://jira.sakaiproject.org/browse/SAK-16745 ) the allowArraySyntax property setting is no longer needed. This was changed for Sakai 2.7.
The STRICT_QUOTE_ESCAPING setting is still recommended for Sakai.
Details
Assignee
Beth KirschnerBeth KirschnerReporter
Beth KirschnerBeth KirschnerComponents
Priority
Major
Details
Details
Assignee

Reporter

Oracle did away with PermGen and replaced it with something called "Metaspace". Interestingly enough, Metaspace - unlike PermGen - has a maximum default of UNLIMITED if not defined. While this can be useful in some cases, it can lead to eating the servers memory by problematic apps. Also interestingly enough, in most cases, configuration can simply replace -XX:MaxPermSize=###M with -XX:MaxMetaspaceSize=###M and -XX:PermSize=###M with -XXMetaspaceSize=###M which would have the benefit of restraining this size to reasonable limits, preventing memory overload. This is useful since Metaspace has a MinMetaspaceFreeRatio and MaxMetaspaceFreeRatio which are set to "reasonable" limits based on the Maximum metaspace allowable, so by setting MaxMetaspaceSize, you're doing the memory manager a favor by causing Java to set a more reasonable GC trigger. Since Metaspace is under GC control already, nothing special is needed to enable GC, as was NOT the case under PermGen since it was not GC-enabled unless we added either CMSPermGenSweepingEnabled and/or CMSClassUnloadingEnabled flags depending on the version of Java.
The following permissions should be reviewed to see if they are still required:
-Dsun.lang.ClassLoader.allowArraySyntax=true
-Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false