Archive

Archive for the ‘IIS’ Category

How to figure out IIS Load in NLB

February 18, 2011 Leave a comment

 

As a good practice always collect data on a non-production system.

  • Create a User Defined Performance Collector with below counters for all the web servers added in NLB.
    • Web Server
      • Current Connections
      • Connection Attempts / Sec
      • Login Attempts / Sec


You can save the collection data onto SQL Server, text files, Binary files etc. I mostly save the data in .blg format (Binary).As it is convenient to open the file in Performance Monitor.

Once the collection set is created you can schedule it to run continuously every sec or time you like to monitor, I mostly do it every 1 min.

Let’s say you ran the Performance collection set for one day and collected enough data to analyze. Stop the Collector Set as opening the in-use file can corrupt it.


Open the file in performance Monitor tool.


Performance monitor will do a graph representation for all the data you collected for the duration, but still it give us much information to analyze. Select the counter for each server and see the Average Load of the server.

Performance monitor will give a consolidated Average for the duration data has been collected.

To do deeper analyses on Web Server Load (Average Connection per Hour /Per Day, Peak Load etc.) I load the data into SQL Server using windows performance monitor relog.exe.

Loading the data using relog.exe require ODBC Data Source for SQL Server.

Uploading the Data into SQL server


As u can see from the above picture, I loaded the data into database named Perfmon using ODBC SUFIAN_XYZ_1 successfully.

  • Tables Created on successful data load
    • CounterData
    • CounterDetails
    • DisplayToID    

Stage the data as required; I used the data to analyze all Web Server Load Daily / Hourly.

SQL Query:

SELECT cd.MachineName,cd.CounterName,

SUBSTRING(c.CounterDateTime,0,12)
Date,SUBSTRING(SUBSTRING(c.counterDateTime,12,len(c.counterDateTime)),1,2)
Hour,

sum(c.CounterValue) TotalConnections,

round(sum(c.CounterValue)/count(SUBSTRING(SUBSTRING(c.counterDateTime,12,len(counterDateTime)),1,2)),0,0) Avg_Connection_PerHour

FROM CounterData c INNER
JOIN CounterDetails cd

ON c.CounterID=cd.CounterID

Group
By cd.MachineName,cd.CounterName,

SUBSTRING(c.CounterDateTime,0,12)
,SUBSTRING(SUBSTRING(c.counterDateTime,12,len(c.counterDateTime)),1,2)

Order
by cd.MachineName,cd.CounterName,SUBSTRING(c.CounterDateTime,0,12)
,

SUBSTRING(SUBSTRING(c.counterDateTime,12,len(c.counterDateTime)),1,2)

ASC

 


Copy the Data with head and paste I to Excel and create a PivotTable and chart as below


Graph



Categories: IIS