Distributing Java Applications
Clustering and distributing Java applications has never been easier than it is today. As a result, writing good distributed performance tests and tuning those applications is increasingly important. Performance tuning and testing of distributed and/or clustered applications is an important skill and many who do it can use a little help.
That paragraph introduces a new series of four posts about how to approach testing for distributed Java applications by Steve Harris of Terracotta, who blogs as DSO Guy. Since Steve often writes about performance matters, I'm adding his blog to my blogroll.
Ten mistakes to avoid ...
Steve frames his guidelines as anti-patterns -- in other words, pitfalls or "commonly-reinvented bad solutions to problems" to be avoided [see Wikipedia].
Following the best traditions of such lists, Steve promises to expand his list to ten recommended anti-patterns. (I wonder just how many hours have been spent by authors trying to massage their advice into exactly ten guidelines? :). Here are the introductions and outlines of his first two posts:
Why Your Distributed Performance Tests Are Lying to You: Anti-Patterns of Distributed Application Testing and Tuning -
Part 1Over my next few blogs I'm going to cover a series of anti-patterns in this area. I'll be following it up with a simple open distributed testing framework that I hope can help people out (hint, hint, the testing framework itself is distributed to best test distributed apps). Here are the first 3 anti-patterns...
- Anti-pattern 1: Single-Node “Distributed” Testing
- Anti-pattern 2: Single-Computer “Distributed” Testing
- Anti-pattern 3: Multi-Node, Load Only One
Distributed Performance Testing Anti-patterns
Part 2 of 4In Part 1 of this 4 part blog I hit upon 3 Anti-Patterns that can make one's performance testing a poor representation of reality. Here I'm covering 3 more and will be following up with the last 4 in a few days. After that I'm going to talk about a simple distributed performance testing framework I'm going to give away to try and help people be more successful with this stuff:
- Anti-pattern 4: Fake Data Fake Performance
- Anti-pattern 5: Incoherent Cluster
- Anti-pattern 6: The World by a Thread
I don't really speak Java, so Steve uses terminology that probably has a few special meanings beyond its English language definitions. But what he writes certainly seems to be a systematic approach to some performance issues that arise in distributed systems.
For each anti-pattern, Steve provides a Description, states the Problem with that pattern, and suggets a Solution. You might want to try testing your knowledge of distributed performance issues by seeing how many of those details you can figure out just by seeing the titles above.
Personally, I'm off to watch the 2007 All-Star Game on TV now. Danny Haren of the A's (my team) is starting for the AL.
Update: On July 13, 2007 Steve published the next installment, covering four ... anti-patterns that allow your performance testing of clustered and or distributed software to lie to you:
More Lies - Distributed Performance Testing Anti-patterns
Part 3 of 4
- Anti-pattern 7: In-memory vs. Distributed Performance Comparison
- Anti-pattern 8: Ignore Real-world Cross-node Patterns
- Anti-pattern 9: Ignore Usage Patterns
- Anti-pattern 10: Log Yourself to Death
Tags:
Steve Harris,
Terracotta,
DSO,
DSO Guy,
Java,
distributed application,
checklist,
performance,
testing,
tuning,
Performance matters,
Web performance



Reader Comments