Thursday, 23 October 2014

IIS performance improvement

Introduction

These days in web application performance is very crucial from user and business point of you.  Everyone wants better performance and response from web application. In this article I am going to highlight ways to improve performance from Internet information server serving faster web pages to your users.


Disable IIS logging.
In IIS we can log the details of a HTTP request like client ip, time taken, response size, cookie etc into a file.  This information helps to find the load on the server in terms of number of requests, size and time taken to serve the request which consume IIS resource, so this feature can either be disabled or we can set a number of essential events to log in server
To disable IIS logging open IIS giving “inetmgr” command in run window. Double click on logging Icon.




Click on the disable option on the right pane. Remember that you can set logging option both in server level and website level. 





ASP debugging

In production environment ASP debugging mode is required to help you quickly locate bugs and interactively test your server-side scripts. Stopping debugging mode will save you a great amount of processing power.
To disable debugging:  open IIS giving “inetmgr” command in run window. Select the web site, double-click the ASP feature.



Select Compilation > click to expand Debugging Properties > Both Enable Client-side Debugging and Enable Server-side Debugging false should be set to fare set to False.




ASP Threads Per Processor
This value define limit of maximum no of ASP request can be executed simultaneously. It should be set to the no of threads that will consume 50% of processor time. To handle more request its value should be increased The default value of Threads Per Processor Limit is 25. The maximum recommended value for this property is 100. Set this property as per your concurrent requests.

To set this property open ASP feature as described above. Click to expand Limits Properties under Behavior > click Threads Per Processor Limit > enter the desired value for Threads Per Processor Limit



ASP Queue Length property
This property is to ensure good response time while minimizing how often the server sends the HTTP 503 (Server Too Busy) error to clients when the ASP request queue is full. If the value of ASP Queue Length property is too low, the server will send the HTTP 503 error with greater frequency. If the value of ASP Queue Length property is too high, users might perceive that the server is not responding when in fact their request is waiting in the queue.
Set the value of the ASP Queue Length property just above the peak value.If you do not have data for adjusting the ASP Queue Length property, Set a one-to-one ratio of queues to total threads. For example, if the ASP Threads Per Processor Limit property is set to 25 and you have four processors (4 * 25 = 100 threads), set the ASP Queue Length property to 100 and tune from there.



Enable IIS HTTP compression
By enabling the IIS compression we can utilize the band width in more efficient way.It enables faster data transmission between compression enabled browser and client regardless of whether your content is served from local storage or a UNC resource.

To enable HTTP compression
1. Open IIS
2. Click on compression features to open it, for particular website
3. Enable dynamic and static compression
see below snap for more detail






Enable output caching
Caching is the feature which helps to improve the speed of the IIS by taking copy of a webpage visited by most recent user. If a new user requests the very same webpage located in the cache, IIS will send the copy from its cache without reprocessing the contents. Output caching can significantly improve your server response time for dynamic contents
Refer link Output Caching to see how to configure it.

Composition, Aggregation and Inheritance

Introduction 


In UML people generally get confused between terms Composition and Aggregation and some time with Inheritance. Below these three relations are explained with UML diagram to example the difference.

Composition:

When one (A) class have reference of instance of another class (B) and all the access that instance is controlled by container class (A), then this relation is called composition. A is a composition of B. For example one company (class A) can have many departments. So Company is composition of department (Class B). Department do not have its identity without company, here departments are owned by company so this type of relation is also called "owns a" relation. Below is the UML representation.

Aggregation:

When a class A contains a reference of class B which also have instance and accessible outside A, then this relationship is called aggregation and B is aggregation of A. For example department in above example can have employees but same employ can work for other department also witness same role. So different departmental have instance of employee (B) and employee can exist independent of the department(A). We can say A class has a object of class B. This kind of relation are also called "has a" relation. Below is the UML representation.

Inheritance:

When a class A contains all the members of class B, it is call A extends B or A inherits B. In above example employee class inherits a person class. Such kind of relations are also called "is a" relation. Below is the UML representation.

Complete class diagram