It is important to understand the web applications architecture before listing their performance bottlenecks because it will help in understanding the impact of every bottleneck.
In software engineering, different client-server architectures are used for web application development. These architectures logically differentiate among data presentation, application processing and data management functions. 3-tier architecture (web server, application server and database server) is the most famous NĖ tier client-server architecture used for web application development at enterprise level.
Following is the brief description of each components of the 3-tier web application architecture.
Although network devices donít make any tier of the 3-tier architecture but different network devices like network interface card, firewall, cables, load balancer, routers etc. are used to support and connect other components.
Web server which is on 1st tier in 3-tier architecture consists of low capacity computer(s) that receive user requests, send them to required server and show received results to users.
Application server is 2nd tier in 3-tier architecture having one or more medium capacity computer(s) that receive user requests from the web server, apply business logic on them and send them back to the web server.
Database server is in the last tier of 3-tier client-server architecture which normally consists of a high capacity computer with stand-by facility that manages database access to facilitate user data requests.
Sources of Bottlenecks
As discussed the web applications architectural components (web server, application server, and database server and network resources) in our previous section, these are the potential areas where most of performance bottleneck resides.
It is tough to test each and every componentís performance thoroughly. Server hardware and network resources are assumed to be the main culprits for lower performance. Especially, server upgrades are considered as the best source of performance optimization and thatís why this old saying ďWhen all else fails, throw more hardware at itĒ is recalled. However, different studies and experiences reveal that it is the application code which mainly causes the performance bottlenecks. Based on experience, following are the statistics of performance bottlenecks probability in each of its component.
These results show that 76% of the performance bottlenecks appear in the application and database servers where most of the application code resides and this code causes most of the issues. Meanwhile, less percentage of bottlenecks is produced due to web server and network resources. Identifying bottleneck source is important to optimize the application performance'.
Application architecture is formed by several components and there could be dozens of bad performance symptoms in each component. Being a good performance tester, one must know the list of performance symptoms on each tier to diagnose bottlenecks effectively.
Below is the detailed list of symptoms of each of the web applications 3-tier component.
Network Performance Bottlenecks
Network bottlenecks contribute very little however they are important enough to be discussed in detail because you cannot afford minor issues as well because they can lead to disasters. Following are the major network performance symptoms in context of 3-tier web applications,
Network performance bottlenecks donít have any certain source. Load balancing, security and network architecture can be the major sources. Below pie chart depict percentage of each source to illustrate their impact on performance bottlenecks.
Web Server Performance Bottlenecks
Like network performance bottlenecks, web server bottlenecks donít have major contribution to the performance issues as well. Web servers act as a liaison between client and processing servers (application and database). So web server performance bottlenecks need to be addressed properly since they can affect other components performance to great extent.
Below is the list of bottlenecks which can affect web server performance,
Secure transactions has major contribution to web server performance bottlenecks however usually it is load balancing as well and sometimes high resource specialized functions cause web server performance. Below is the graphical representation of each web server performance bottlenecks with percentage.
Application Server Performance Bottlenecks
Business logic of an application resides on the application server. Application server hardware, software and application design can affect the performance to great extent. Poor application server performance can be a critical source of performance bottlenecks.
Below is the list of application server bad performance causes,
Object caching, SQL and database connection polling are the main causes of application server bottlenecks and they contribute 60% to the application server. 20% of the times inefficient application server causes poor performances.
Below is the complete detail of application server bottlenecks with their impact.
Database Server Performance Bottlenecks
Database performance is most critical for application performance as this is the main culprit in performance bottlenecks. Database software, hardware and design can really impact the whole system performance.
Following is the comprehensive list of database poor performance causes
Bad SQL and indexes contributes nearly 60% to the database server performance bottlenecks. Below chart will show complete detail of database server causes with percentage.
Client Side Performance Bottlenecks
The client side performance aspects as under come an increased interest in the last years with the release of Google performance optimization best practices like caching, lesser number of static files, file modification, compression, java script processing time, page rendering, etc.
For rich internet applications with lots of images, videos, etc, the client side aspects have a bigger bearing on the actual response time when compared to the server side response time and should be given due importance.
Using many modern AJAX architectures, it is possible to place so much code in the client that a significant amount of time is required before the request is transmitted to the application server. This is particularly true for underpowered client machines with inadequate memory and slow processors.
Top 10 client side performance symptoms:
Third Party Services Performance Issues
Today web applications heavily relay on third party components which affect the page loading and result in bad user experience. It is a common practice that third party tools are not properly analyzed from performance point of view before integrating them into the application. If you ever observed the page components load time, you would have experienced that third party components take more time. These third party components can cause various performance bottlenecks but following are the most common,
Web applications are becoming complex day by day and at the same time, the identification of their performance bottlenecks is becoming a tough task. Various factors contribute to the performance issues and knowledge of their issues & their symptoms is mandatory to rectify the performance bottlenecks. Web server, application server, database server hardware, software and design along with network configurations can be major contributors to performance bottlenecks. Moreover, client side design and third party components can also affect web application performance. Knowledge of a complete list of symptoms of all potential problematic areas will help in identifying the root cause and its remedy.