{"id":7,"date":"2014-06-30T09:48:55","date_gmt":"2014-06-30T09:48:55","guid":{"rendered":"http:\/\/blog.gallop.net\/?p=7"},"modified":"2019-04-02T12:53:03","modified_gmt":"2019-04-02T07:23:03","slug":"usage-of-mind-map-in-performance-engineering","status":"publish","type":"post","link":"https:\/\/www.cigniti.com\/blog\/usage-of-mind-map-in-performance-engineering\/","title":{"rendered":"Usage of Mind Maps in Performance Engineering"},"content":{"rendered":"
Mind maps can be fantastic tools to aid analyzing performance bottlenecks. If done correctly, it not only help identifying bottlenecks faster but also help in creating document analysis tips for rest of the team and for later usage. The mind map below is an example of root cause analysis when page load time is observed to be high.<\/p>\n
Most of the time, when response time of a web request is found to be high, performance tester starts digging out the fault on server side. It is not always true to have the issue lying at server side and on database server. The issue can exist anywhere in the delivery chain. I usually follow below order while identifying the issue of high response time.<\/p>\n
Step 1:<\/strong> Issue with Tool \/ Scripts<\/p>\n Before checking anywhere else, it is advisable to validate the scripts and tools being used for performance testing.<\/p>\n \u00bb\u00a0Does high response time include think time unknowingly?<\/p>\n \u00bb\u00a0Is there redundant logic (e.g. client side functionality) inside transaction for which response time is reported?<\/p>\n \u00bb\u00a0Which tool is being used for load generation? What is the logic for calculating response time?<\/p>\n \u00bb\u00a0Is there any extended logging being used? Extended logging will skew the response time.<\/p>\n \u00bb\u00a0Has browser (number of parallel connections) been emulated realistically?<\/p>\n <\/p>\n Step 2:<\/strong> Issue with Infrastructure where load generators are installed<\/p>\n It is important to monitor hardware performance where load generators are installed. The response time information might be incorrectly stated when low configuration machines are used.<\/p>\n \u00bb\u00a0Are hardware utilization (CPU, Memory, I\/O) overly stressed?<\/p>\n \u00bb\u00a0Are there issues (Latency, Packet Loss and Bandwidth) with network?<\/p>\n <\/p>\n Step 3:<\/strong> Issue with client side logic and web page resources<\/p>\n Response time can be improved by optimizing the client side logic first before tweaking the server side logic<\/p>\n \u00bb\u00a0Are images being scaled unnecessarily? Avoid scaling of images in HTML reduces the bandwidth usage and round trip time<\/p>\n \u00bb\u00a0Is CDN being used for serving the static resources? CDN helps in serving the static resources faster<\/p>\n \u00bb\u00a0Is JS \/ CSS blocking loading of other resources? Loading of JS \/ CSS can be deferred to unblock other resources<\/p>\n \u00bb\u00a0Is unused code also being downloaded? Apart from performance, it risks security as well<\/p>\n \u00bb\u00a0Are there many third party ads being loaded? Is third party ad causing slow response time?<\/p>\n \u00bb\u00a0Is caching being used properly? Caching helps in serving the requests faster.<\/p>\n \u00bb\u00a0Is cookie less domain being used for static resources? It helps in optimizing the bandwidth.<\/p>\n \u00bb\u00a0Are images being loaded in parallel? How many parallel threads being used?<\/p>\n \u00bb\u00a0Are images optimized for better serving and bandwidth?<\/p>\n \u00bb\u00a0Is CSS sprite being used for loading logos?<\/p>\n \u00bb\u00a0Are resources being compressed before serving?<\/p>\n \u00bb\u00a0Has redundant code and space being removed before serving JS \/ CSS files?<\/p>\n \u00bb\u00a0Are view states being used properly?<\/p>\n \u00bb\u00a0Is this possible to reduce number of requests by validating content on client side rather than on server side?<\/p>\n <\/p>\n Step 4:<\/strong> Issue with load balancer<\/p>\n \u00bb\u00a0Is load balancer algorithm working as expected? Are all requests being distributed evenly on active servers?<\/p>\n <\/p>\n Step 5:<\/strong> Issue with Web Server<\/p>\n \u00bb\u00a0Does it require improving hardware (CPU, Memory, I\/O) of web server?<\/p>\n \u00bb\u00a0Is caching being utilized properly on web server?<\/p>\n \u00bb\u00a0How threads are being utilized? Are there enough threads allocated in thread pool?<\/p>\n \u00bb\u00a0Are there requests waiting for external resources (database, disk, payment gateway etc.)?<\/p>\n \u00bb\u00a0Is web server configured as per required load? Configuration related to thread pool, number of concurrent users allowed etc.?<\/p>\n <\/p>\n Step 6:<\/strong> Issue with Application Server<\/p>\n \u00bb\u00a0Does it require improving hardware (CPU, Memory, I\/O) of application server?<\/p>\n \u00bb\u00a0Is JVM configured properly for heap size, thread models, GC scheme and JVM version?<\/p>\n \u00bb\u00a0Is garbage collector working efficiently? Can it be optimized further by sizing the generation and selecting a proper collector?<\/p>\n \u00bb\u00a0Is caching being utilized properly on application server? Connection cache? File cache?<\/p>\n \u00bb\u00a0Is thread pool configured properly? Maximum threads? Queue length?<\/p>\n \u00bb\u00a0Are sessions being configured properly like session time out?<\/p>\n \u00bb\u00a0Are many exceptions stack trace found in debug log file?<\/p>\n \u00bb\u00a0Are asynchronous calls being handled optimistically?<\/p>\n <\/p>\n Step 7:<\/strong> Issue with Database Server<\/p>\n \u00bb\u00a0Does it require improving hardware (CPU, Memory, I\/O) of database server?<\/p>\n \u00bb\u00a0Are indexes being used properly?<\/p>\n \u00bb\u00a0Are there expensive queries that can be tweaked \/ improved?<\/p>\n \u00bb\u00a0Are there blocking issues due to locks?<\/p>\n \u00bb\u00a0Are indexes heavily fragmented? Is database in need of defragmentation?<\/p>\n \u00bb\u00a0Is it a replication intensive environment? Is replication is causing slowness?<\/p>\n \u00bb\u00a0Has database statistics been updated? When was the last time database statistics run?<\/p>\n