Saturday, December 18, 2010

Book Review for "Jboss AS 5 Performance Tuning"

Let me make one recommendation, right off the bat. Do not pick this book up in the book store and page through the first chapter and a half before putting it back on the shelf. If you do that, you'd miss out on what is perhaps the best contemporary JEE tuning book in existence.

The first 50 pages are a little slow. Mostly they cover the author's recommendation for a performance tuning lifecycle, and a handful of open source tools that can be used to assist with performance tuning. The tools section in particular might lead you to believe the book is light on content-- there are plenty of big screenshots that show you things you could have picked up from the tool's website. But once you're past the tools section, the fluff ends there. What lies ahead is pure good stuff, and it will lead you from the O/S clear through the application server and into the application code.

The author has a clear bias towards Linux in the writing, but does include some Windows-centric advice in places. One constant throughout the book is the use of before/after metrics (captured with JMeter, as you are likewise taught to do) to demonstrate the effect some tuning tweak has had. This is consistent with the stated philosophy of basing things on hard data, not seat-of-the-pants observations. There are plenty of graphs pulled straight from JMeter, which is consistent with how the author recommends we go about measuring progress. Clearly, this guy believes in the methdology he suggests we use.

As the title suggests, the book deals mostly with JBoss AS 5 specific tuning recommendations. That doesn't mean that's all you get, though. Nearly everyone should benefit from the O/S advice, and Java users will benefit from a whole chapter on JVM tuning. Tomcat and Apache users will find many good tips in the latter chapters.

The book is sliced into layers, as code hosted on an application server would be. There are sections on the web layer, EJBs, JMS, ORM (including some good parts about Hibernate, with cache tuning) and cluster tuning. There are separate sections for web frameworks and web service based applications, too. Each of these sections tells you enough about that particular domain to let you know what you want to optimize and how to optimize it. Don't get me wrong-- there's not enough here to make you a clustering expert, for instance-- but there is enough here to let you know how to tune clustering once you've referred to other doc (i.e. the app server doc) and have something ready to run.

Basically, the book addresses nearly every aspect of what can be tuned and optimized, including in-line recommendations about how the application code should be written.

So, who would I recommend this book for? Here's my list:

- Anyone running JBoss AS 5 (Strongly recommend.)
- Developers writing JEE applications (Recommend. The JVM and O/S sections alone will be good, and other sections lend insites into how JEE application servers work. Tomcat users would benefit, too.)
- Java developers (Weakly recommend. The O/S and JVM sections are worthwhile, though.)

As for me, I work with JBoss every day, so I'm going to give this one a second read immediately. That's some of the strongest praise I've got to give.

The book can be found here.

Happy reading, and happy tuning!


1 comment:

How Much Water Should You Drink a Day said...

I wish I had known about this book three years ago. Built that system, went through four releases, and moved on. God bless whoever has to maintain it now. But my biggest performance issues were from underdocumented 3rd party vendor APIs - black box JARs that did whatever the hell they wanted to, and a bunch of headscratching from the vendor when the damn things locked up.