> On 22.12.2017 13:48, Eric Robinson wrote:
> > We have multiple JVMs deployed on two identical Linux servers. Each server
> has 60 JVMs. Until today, both servers were running Tomcat6 with JDK 1.6.
> Today we upgraded one of the servers to Tomcat 8 with JDK 1.8. Now the JVMs
> on the Tomcat 8 server are each using between 20-80% more memory than the
> ones on Tomcat6 with JDK 1.6. Is that normal? Why would that be? Is it some
> kind of settings? Is it fixable?
> >
> It might be as simple as different thresholds for the garbage collector to 
> kick in.
> I'd start with an evaluation of how much memory is used right after a GC run -
> and in case this isn't satisfactory, which objects use the memory.
> Typically it's appropriate to just look at the top of the list.
> 
> Note that the GC algorithms (or just GC defaults) between the different JVM
> versions (sometimes even between minor upgrades) might differ significantly.
> One big question is: Did you explicitly configure memory consumption, GC
> algorithm and thresholds? If so, what's the difference between the two 
> options:
> I'd expect that you need to change the settings significantly in order to 
> achieve
> the same behavior. There's a lot of work that has been done in this world.
> 
> That being said, I'd also not rule out that tomcat's or other component's
> implementation changed - e.g. caches, or just memory use through upgraded
> libraries. But I'd recommend to look in both directions, with JDK and GC 
> tuning
> being the elephant in the room, giving you the biggest bang for your buck.
> 
> Olaf
> 

The following startup options are typical for our JVMs. The min, max, and 
permgen settings may differ from JVM to JVM on the same server, but the 
settings are always identical between servers. In other words, if JVM instance 
"A" is configured as follows on server 1 under tomcat6/jdk 1.6, then instance 
"A" on server 2 is configured the same, except it is running under tomcat 8/jdk 
1.8. Yet the tomcat 8 ones used 50% more memory, on average. 

JAVA_OPTS="-Xms16M -Xmx192M \
        -XX:MaxPermSize=192M \
        -Djvm=$JVM_ID \
        -Djava.awt.headless=true \
        -Djava.net.preferIPv4Stack=true \
        -Duser.timezone=US/Pacific \
        -Xloggc:/alley/site098/tomcat8/logs/gc.log -XX:+PrintGCDateStamps 
-XX:+PrintGCDetails

Reply via email to