DynaTrace's Top 10 Performance Problems taken from Zappos, Monster, Thomson and Co

DynaTrace in Top 10 Performance Problems taken from Zappos, Monster, Thomson and Co, has provided a useful compilation of performance problems, with potential solutions, that they've found while working with their clients.

  1. Too Many Database Calls - too many database query per request/transaction.
  2. Synchronized to Death - in a high-load or production environment over-synchronization results in severe performance and scalability problems.
  3. Too chatty on the remoting channels - too many calls across these remoting boundaries and in the end causes performance and scalability problems.
  4. Wrong usage of O/R-Mappers - incorrect usage of the framework itself too often results in unexpected performance and scalability problems within these frameworks.
  5. Memory Leaks - GC does not prevent memory leaks, it is important to release object references as soon as they are no longer needed.
  6. Problematic 3rd Party Code/Components - check of every framework before introducing it into your code.
  7. Wasteful handling of scarce resources - Resources such as memory, CPU, I/O or the database are scarce. Wasteful handling of these resources results in lack of access to these resources by others and ultimately leads to performance and scalability issues.
  8. Bloated web frontends - many applications get packed with too much stuff.
  9. Wrong Cache Strategy leads to excessive Garbage Collection - Before implementing a caching strategy you have to figure out which objects to cache and which objects not to cache.
  10. Intermittent Problems  - Intermittent problems are hard to find. These are usually problems that occur with specific input parameters or only happen under certain load conditions.
  11. (Bonus Problem) Expensive Serialization. Different types of serialization have a different impact on performance, scalability, memory usage and network traffic.