A good developer will always start with an assumption that the problem is with the code. Afterall, that is the part that is the most specific to your usecase and the rest is almost always tested in other environments already, so less likely to have issues. First rule out the issues in the code before you start travelling up the chain to look for product and then infrastructure issues.
Here is the relevant text from a deck on performance that we present to our customers:
We often see that people panic and start taking wild guesses at the root cause. They start changing undocumented server settings and tweaking obscure JVM options, and when these changes don’t actually make things worse, which they often do, they usually make an insignificant improvement, and that’s because the root cause of most performance issues is in the application code itself. But how do you find that bottleneck in your code? Many, again, resort to taking wild guesses, while others resort to a more scientific but tedious task of adding logging statements and timing steps to their application in a desperate attempt to find the proverbial needle in the haystack.
The correct way to do this to use the proper tools to profile and observe your application behavior in its natural state of processing and then take measured steps to address the issues identified.
For full disclosure, I do work for a company that specializes in these areas and has two products that exactly provide the micro level profiling details or the macro level observability metrics. The products and the experiences are all based on years of customer engagement with the webMethods products.
Rupinder Singh
#performance#Integration-Server-and-ESB#webMethods