Home » Posts tagged 'application response time'
Tag Archives: application response time
We all have worked on multiple projects and have delivered multiple applications to Production, but one of the Common Issues that surfaces everytime irrespective of the technology used in the application is “The site is very slow”. This actually boils down to the latency and response time for loading the UI.
Even though some of the complex integrations, with external/legacy systems, workflows, business rules, database queries, customization of the screens and many more…have been incorporated in a project, the one single thing that can stump the customer or the end user is the page-load time.
Lets, forget about the project, even in our day-to-day life, we get irritated and pissed-off when the Banking Transaction or the Gateway Payment is slow – we just burst out. For any page we browse, if it takes, more than 4-5 seconds, we just move-on to some other link.
The best example to site here is : What is the link you enter in your browser to check if the network connectivity or wireless is ON. Have seen most of the people including myself hitting the url with – http://www.google.com. But Why??… The simple and straight forward answer is, it loads very very faster than other pages(agreed it can be debatable considering that the Google homepage just has a few lines texts)
So, the bottom line is, to please the end user and give him/her a better experience, its is very important to concentrate on the page-load time and the steps to improvize upon it.
My earlier blog post showcases an infographic (by GTMetrix.com) about “How much time is wasted in Loading Web Pages“. This is something that cannot be ruled out or kept aside.
This brings us to an interesting question How??
Living in an era of high end technology and Open-Source Softwares, things may not have to be built from scratch. Here are a few tools and examples of the engineering tools that can be leveraged for identifying/debugging the loopholes and providing a lightening speed user experience.
1) YSlow :
- YSlow is a tool that helps you to speed up your website.
- It is an add-on for Firefox—or rather, an add-on to an add-on (Firebug).
- This is developed by the Yahoo Exceptional Performance Team
- It is built on 34 basic rules that affect a web page performance and slowness
- The details of these rules can be browsed from the like – http://yslow.org/.
- It Grades the web page based on one of three predefined ruleset or a user-defined ruleset
- It provides suggestions for improving the page’s performance
- Summarizes the page’s components
- Displays statistics about the page
- FAQs on YSlow – http://yslow.org/faq/
Here are a few pointers, if breached may be the responsible for slowing down your webpage-loading :
- CSS references should always be placed on top of a web page
- The Java Scripts should be placed at the bottom of the page
- Compressing the components with GZip
- Expensive errors like HTTP 404 should be avoided as it degrades the end user exp.
- Using a centralized content delivery network (CDN) for storing static images and documents for referencing in the web pages
- ..many more (from the Yahoo’s list of Rules)
At some point of time one curious question might arise, “my application has a performance score of 100% but still it’s very slow. Why?” Well then obviously it’s time for you to sit back and start optimizing your business logic and entire solution implementation. Remember “Yahoo’s problems aren’t necessarily your problem”.
Interesing Regerences :
- YSlow User Guide
- YSlow faqs
- Its is a free speed analysis tool for websites!
- Logon to GTMetrix.com (signup for better tracking of results)
- Enter the URL of the page/site you want to monitor and click submit
- It gives a Report (PDF), with detailed information on the Page Speed and reason for slowness of the system
- It is integrated with YSlow at the backend, and provides a Grading from the Page Speed perspective and YSlow perspective
- With advanced options even the testing hub or location can be selected (if the application is globally accessed by customers)
- Filmstrip capture can also be generated to showcase after how many seconds the page gets loaded, or what all portions of the page get loaded every second
Interesting Read :
- Why is my page slow? (Detailed architecture and description for slowness of a web page)
- GTMetrix faqs – nice read
3) Google’s Page Speed Insights
- The PageSpeed family of tools is designed to help you optimize the performance of your website.
- PageSpeed Insights products will help you identify performance best practices that can be applied to your site, and PageSpeed optimization tools can help you automate the process.
- Download plugin Page Speed Insights(by Google) from Chrome Web Store
Other links for Testing the webpage speed :
Reference and Nice Read :
Please do sugegst and share if you come across any interesting link or tool for boosing a website!! 🙂
PS: The examples of the sites referred in this blog are just examples, and has nothing to point out or compare which site performs better
Happy Speeding!! 🙂
What is APM?
Once the application has been deployed into production, there should be means to monitor the application’s performance to identify any potential bottlenecks. Though there are strategies like instrumentation of source code these are not without constraints. Developers need to code the application in such a way that the instrumentation is possible in a non-intrusive way. This complexity increases with the complexity of the application typically spanning through various layers like UI, server side UI code, services, data layers etc. What is needed is a non-intrusive way of monitoring an application without having to change the code. APM tools provide this capability.
Application Performance Management (APM) is also considered as the science of understanding all the factors that impact application performance.
Why do we need APM?
Here are some of the pain-points when it comes to an application that is built in an enterprise scattered with different topography, landscape details and agile mode of development:
- business demands are increasing
- applications are rapidly changing
- there are too many development/test iterations
- it takes too long to deliver and repair apps.
From an application performance monitoring perspective, there are few specific criteria’s or attributes which are very important for any business to monitor and serve the end users with a better experience :
- Application Availability (i.e. what is the frequency of the users’ transaction getting completed and resolved)
- Application Response Time (i.e. how long the business user has to wait for the transaction to complete)
- Transaction Time (i.e. the sum of the parameters like Client Delay + Network Delay + Server Delay)
Based on the above sets of parameters there are different schools of thoughts on monitoring (based on the type of business scenario) like
- Transaction based monitoring (i.e. time taken between submission of request and getting the confirmation page)
- Throughput based monitoring (i.e. the throughput bytes/sec seen on the UI)
- Streaming based monitoring (i.e. %age of time the application kept the playback buffer)
If we take the real-time scenario, this is what we feel we have created for the End user:
But the end-user comes across screens like “Search in Progress”, “Loading…”, “Page cannot be rendered”, “Error 404 – Page not Found” etc. These can actually act as bait to Test the Patience of the end user. We all have experienced it and face it in our day-to-day life (Bank Transaction, Bill Payment, Online shopping etc..)
The “THING” the Business does not see but we know the pain and the effort we have spent in creating the Business-Backbone i.e. the underlying hidden complexity of the Application. I cannot say the response will take 3-5 seconds because, multiple external systems are involved and it all depends on the current state and availability of the systems based on the data exchange. Here is a snapshot of the Hidden Complexity of an application
When do we use APM?
For the disastrous application performance and slowness of the system for which the end user gets furious – there could be “N” number of factors responsible or a combination of all. It could be:
- network factors such as errors (link errors or duplex mismatch, server downtime)
- congestion (which causes discards), and
- high network latency (due to network topology or slow firewalls)
- internal service calls and external system availability
- memory issues (CPU utilization, memory leaks, disk space, garbage collection)
- query data too high
- cache was not thread safe
- object locking issue
- …and many more
In order to counteract the different issues and risks in an application APM comes to the rescue helping the developer, testers and everyone in the Team in identifying, troubleshooting and debugging the issue.
How do we use APM in an end-to-end solution?
Whenever we move a code from DEV to TEST and from TEST to PROD, we always deploy the code and push it to the new environment with our fingers crossed. So, that we do not get any surprises. Everyone likes surprises but not when it comes to issues and bugs 🙂
APM Tools actually provide features like :
- Application performance dashboard (number of errors, policy breach, stall requests and graphical representations)
- Defining Business Policies (that were breached and that are within limits – eg: Garbage collection has taken place on time or the Memory Leak is within limits)
- Defining Thresholds (e.g: lets say the business needs an avg response time of 2ms and anything above this number can be considered as a slow performance)
- Configuring Alerts and Notifications (it more like sending a email notification or trigger when a policy or threshold is breached)
- Taking snapshots of the system on a timely basis
- Populating the Stall and Outlier requests that needs to be analyzed and troubleshooted
- Define Business Rules and Conditions
- Integrating with all the external systems(like : LDAP, mainframes, TIBCO, Pega, Email Server, HTTP request, Oracle, Cassandra etc..)
Intro to AppDynamics :
AppDynamics is one such APM tool in the market and is rated highly on Gartner’s Magic Quadrant for APM.
Source : Gartner (AppDynamics Site) http://info.appdynamics.com/APMmagicquadrant.html
Following are the features :
- Monitoring Machine (System CPU utilization, garbage collection, network I/O)
- Monitoring Web Applications (latency, response time number of calls, thresholds breach, policies breach)
- Monitoring Modern Systems (NOSQL database and many other external systems like Cassandra, LDAP, mainframes, Tibco, etc.. even we can have our own custom connectors)
- Configuring Policies and Thresholds for alerts and outliers
- Analyzing Issues and Debugging/Troubleshooting
- Configuring cloud instances
AppDynamics Deployment Architecture:
AppDynamics is composed of a central Controller or management server that communicates with two kinds of agents, an Application Server Agent (App Agent) and a Machine Agent. The Controller UI is the performance monitoring interface. The Controller can be easily deployed on-premise or hosted by AppDynamics using a SaaS delivery model.
The App Agent is deployed on the machine where the application to be monitored is deployed. The App Agent sends the application level information related to the request, processing times etc. to the controller. The controller uses an internal database (mySql) for storing all the data that is fed. Based on the statistics and data availability, it generates the necessary graphs, charts, tables and performance indicators. Similarly, the Machine Agent sends all the Machine/System health level information like Garbage Collection state, CPU Utilization, Disk space, and other Network I/O updates.
Advantages Business Benefits of using APM Tools :
- Better Visibility of the end-to-end solution
- Performance Dashboard – providing a one-stop place for the Health of the Application
- Proactive Alerting and Notifications which helps to keep the Issues under control
- Troubleshooting, Analyzing and Debugging made easy
- Faster Resolution of Issues
- Automating Tasks to reduce manual intervention and effort
- Reports and Data snapshots for reference and audit trail
Concluding Thoughts :
APM is definitely not a mandate for any Application, but having said that, with the growing trends in the way we knit of applications involving on-premise systems, external systems, cloud based systems, mobile applications and many other hunky dory systems in an enterprise landscape. It becomes a nightmare when an issue or a show-stopper pops up. Where to to start with and What to proceed with. This is where life becomes easy with a APM Tool which takes the burden of identifying the culprit in the application and showcasing it to us on a dashboard. Here is a snapshot of the Current and the Future Trends of application build :
List of some APM Products in the Market :
Please feel free to add your valuable thoughts and inputs 🙂
Happy Learning 🙂