This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
you need to do root cause analysis, usually i follow these steps
1. use some browser tools like firebug and yslow to make sure that there is no network latency in sending this request to my server.
2. take server's heap snapshot and if required heap and thread dump to know overheads.
3. at last you need to improve your logging level to understand which layer of application took how much time(aop).
4. make sure data needed by application is available, if not like coming from SOA or DB, quantify the delay.
also observe application behavior in different env or different servers.
1. Use the page speed plugin to identify delays in HTTP calls and the number of calls made.
2. Use a JVM profiler to identify delays caused by application code.
3. Analyze metrics from your persistence layer (say a database) to quantify IO delays.