[Deploying Sakai] Java 1.6 update; Solaris warning

Charles Hedrick hedrick at rutgers.edu
Wed Jul 1 11:47:57 PDT 2009


We just moved all 4 of our production front ends to Java 1.6. We have  
had 2 of 4 on 1.6 for a couple of weeks, and all development and  
testing systems. We're currently using 1.6.0u13, with some test  
systems on 1.6.0u14.

We had the JVM crash in SSL code from LDAP queries. This appears to be  
a Solaris-specific problem. We strongly suggest modifying /usr/java/ 
jre/lib/security/java.security on Solaris machines. The first non- 
comment section is a list of security providers. The first entry will  
be a Solaris-specific binary provider: sun.security.pkcs11.SunPKCS11.  
Comment that out, and change the numbers so that the next one is now  
1. Here's what the first non-comment entry should look like:

security.provider.1=sun.security.provider.Sun

This is the normal Sun Java code, which is the first provider on  
Linux. For Solaris the first provider is an interface to a Solaris  
native library. That interface apparently does not always handle  
signals properly, resulting a JVM crash.

We're now using a simplified JVM configuration:

JAVA_OPTS=" -d64 -Dsun.lang.ClassLoader.allowArraySyntax=true - 
Xmx13000m -Xms13000m -Xmn3g -XX:+UseConcMarkSweepGC -XX:+UseParNewGC - 
XX:MaxPermSize=512m -XX:PermSize=64m "

The classloader argument is needed for Java 1.6 to work at the moment.  
Note that the only real tuning is now to specify the GC, and to set  
memory size. The rest of our old tuning is not needed with Java 1.6.  
I'm considering removing -Xmn3g as well. We used a larger than normal  
new space because in the past the JVM had to survive allocation of  
very large objects needed for uploading large files. That code may  
have been fixed by now to use streams rather than large arrays. A  
large new has performance advantages in any case, but the 1.6 default  
may be big enough already. -d64 is almost certainly not needed for  
Solaris. -server may be needed on some platforms.

We've hoping that Java 1.6 will no longer have very long (several  
minutes) pauses in the GC. If we still see that problem, I'm  
considering experimenting with the new GC, G1.



More information about the production mailing list