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
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org