Wednesday, April 20, 2011

links for 2011-04-20: Who should(n't) by an iPad 2; Oracle gives up on OpenOffice

Wednesday, April 13, 2011

Is GlassFish v3 slower and a bigger footprint than v2.1?

When I was at Sun, we often touted the work we did with GlassFish v3 to improve startup times.  A lot of this was based on v3 being more  modular with an OSGi kernel and "HK2".  Now that I'm on the other side, at a software vendor (NextGate) that supports GlassFish as an app-server for our product, I get to see if it is really true in the real world!

To try it out, I did a few quick tests.  For the record, what I tested was GlassFish v2.1.1, v3.1 Full, v3.1 Web Profile, and I included Tomcat 7 for one test just to compare.  I also did this all on OS X on a fairly new MacBook Pro.

First, I deployed a fairly small and simple Web-app and then stopped and restarted each app-server several times.  My observations on startup times and footprint after start were:

ContainerStartup TimeFootprint
GlassFish v2.1.116 sec178 MB
GlassFish v3.16.5 sec153 MB
GlassFish v3.1 Web Profile5 sec123 MB
Tomcat 71 sec74 MB

This shows that v3 has clearly made improvements over v2 in both startup time and footprint This is as expected.

What surprised me a bit was that Web Profile had further improvements over the full profile, this because I thought only what was required would be started with the full profile and so it should basically match Web Profile in this case and it didn't. It was also significantly heavier weight. Does this make sense?

Also, Tomcat is clearly the speed demon and lightest weight, but this isn't really an apples to apples comparison as Tomcat doesn't offer as much as any of the other options. It still sets the standard for fast startup and small footprint though.

Next, I deployed another EAR and WAR file that make up our application.  Here is what I observed:

ContainerStartup TimeFootprint
GlassFish v2.1.120 sec207 MB
GlassFish v3.124 sec400 MB

Now this was more surprising.  Not only did v3 take longer to startup, the footprint was nearly twice that of v2!  Effectively, v2 added 4 seconds to startup a second WAR and an EAR, but v3 added nearly 18 seconds to do the same.  And why v3 is using so much more memory, I'm not sure.

Now, perhaps my test is too simple or I'm not looking at the exact right metrics to really measure startup time.  But what I'm using is the Real Memory reported by Activity Monitor and both the time it takes for "asadmin start-domain" to return the the start time reported in the server.log file.

As additional background, I'm deploying the same WAR and EAR files to both v2 and v3, and since they run in v2 they are not specific to EE 6 and the only EJBs are SSBs.

So GlassFish experts, help me out.  Is what I'm seeing real?  Is v3 really slower and larger than v2 for this type of use case?