Upgrade to Glassfish 2, slash your bandwidth usage by half

I’m a couple of days into making the switch from Glassfish v1 UR1 to Glassfish v2 beta-2 and I’ve gotta say that, even at beta level, this is a compelling upgrade.

There are tons of improvements in v2 (including first class clustering support), but there were two compelling features for me personally in v2 to make me move over to the new beta:

  • Http Compression Support
  • Much improved Virtual Domain support

The Http Compression support was a big step up. Tomcat users have had this for a while, but it was only introduced to Glassfish in v2. Jean-Francois has documented this ages ago, and you can do it all via the GUI in beta 2 (just put in “compression” equals “on” in the properties of your http-listener-1 page). This has been a killer for me as I creep closer and closer to my ADSL allowance. Check this out:

Graph showing compression effectiveness

The first two days were before enabling compression (and are representative of my standard traffic profile) at just under 400Mb/day, the next two days are once I turned on compression – just under 200Mb/day. Awesome! My traffic cut in half! If I tune the default compressibleMimeTypes I might even be able to improve on that!

The other killer feature for me in v2 is much improved Virtual Domain management. I host about 5 different domains on my current server and I had all sorts of issues with default apps on virtual servers under v1.0. I would often get my “default application” for a particular server starting up twice – which led to all sort of dramas (hibernate concurrency issues, excess memory usage, etc). All that has gone away under V2.0 – and I can see from the logs everything is just starting up once! Under v2, I can also bind multiple apps to the “/” context – since they each run on different virtual servers. Awesome!

One thing I have also noticed in V2 is *much* snappier performance on both startup and render times. All my Grails apps continue to run just fine – and I took the opportunity to move to Grails 0.5 which is also much faster to startup.

The only real gotcha was the need to enable access logs (which are turned off by default), and needing to tune my log format, but once that was done my awstats continued working just fine. Also need to add -Djava.awt.headless=true to my JVM params to keep my charting stuff working happily.

Big props to the Glassfish guys. They’ve done an awesome job with this upgrade.

3 thoughts on “Upgrade to Glassfish 2, slash your bandwidth usage by half

  1. Why couldn’t you have rolled your own? Jason Hunter wrote a servlet filter that does the same thing…like in 2001. It was 20 to 30 LOC I think

  2. I guess you could do that. But wouldn’t you then have to add that filter to every app you deploy on your appserver (both your own and third party)? Sounds like a fair bit of work to me…

    When it’s supported at the appserver level, I’m turning it on automatically for everything that’s generating content of type text/html, text/xml, etc. in a non-intrusive way. So it’s pretty darn convenient.

  3. 15 minutes or less to write it…and another 10 to 15 to deploy. to deploy you just have to apply to add to your .war(s) and modify web.xml

    applying the filter against 3rd party apps would be the same.

    I think it’s a good thing that Glassfish has incorporated, but I wouldn’t upgrade my appserver to a beta as opposed to rolling out the servlet filter.

Comments are closed.