A Simple Exercise in Scalability
All our customers at Sunburnt are running the same apps from the same codebase which makes life so much easier, but also presents lots of opportunity for scaling up. Here's a few different ways we've deployed these Java webapps:
So, how does each of these methods scale? Here are the rough performance figures for a deployment of 35 sites.A Simple Exercise in Scalability
|Startup time||90 s||60 s||4 s|
|Startup heap usage||50 MB||45 MB||8 MB|
|Running heap usage||90 MB||75 MB||35 MB|
|Running nonheap usage||198 MB||42 MB||42 MB|
Most of that startup time goes into loading JSF servlets. Going from 35 servlets to one makes startup almost negligable. All that nonheap memory is just classes loaded into the PermGen space. Using a single classloader makes a big difference and is a pretty simple thing to do.
We've found there are similar order of magnitude performance improvements to be made by configuring OpenJPA - particularly in relation to caching, and we're now moving from one EntityManagerFactory per site to one EntityManagerFactory per context (these factories do a lot of caching).
Roger Keays is an artist, an engineer, and a student of life. Since he left Australia in 2009, he has been living as a digital nomad in over 40 different countries around the world. Roger is addicted to surfing. His other interests are music, psychology, languages, and finding good food. Click here to subscribe to his weekly blog, or stalk him on Facebook and Twitter.