Thursday, February 18, 2010

Server Performance Monitoring

What is server monitoring?
Performance Testing is not just testing. As mentioned earlier, it is the process of identifying the performance issues. Well, if you identified that performance is poor, what will be the next step? Obviously it is to find out why performance is poor. Monitoring is used for that purpose. In other words, it is to identify what performance factor is the root cause of the problem. Or it is used to find out the performance bottlenecks.

What to monitor?
Resources and application code. It is otherwise called as
Resource monitoring
Application profiling
Resource monitoring further can be divided into two. First one is hardware resource monitoring. Example is CPU, Memory. This will give the overall capacity of the server hardware. The second one is software resource monitoring. Example is Number of threads, Memory Heap used by Application server software. Application profiling is technique to find out the piece of code which is taking more time. Example: HP .Net, Java Diagnostics. Following sections will explain some of the common monitors which can be used.


The hardware resource monitoring to 2 categories based on the server Operating System. One is Windows based servers and the second one is Unix based.



Windows Monitoring
Perfmon is a single point solution for almost all the resource monitoring in Windows servers including application servers like Internet Information Server (IIS). It can be used to view and log the server statistics. It is part of Windows OS and need not be installed separately. That means in all the Windows computers including PCs, you can find this tool.
Following are the some of the counters and how they help to identify the performance bottlenecks. Please refer the perfmon help page in windows for setup and more details.


%Processor Time – It shows the total CPU utilization of the Windows server. If there are multiple CPUs in the server, this will give an average of all the processor utilization. CPU Utilization consistently above 85 % can be considered as CPU bottleneck. Again, many people confuse with CPU spikes. Intermittent CPU spikes may not be a concern, but if it is with too short interval or showing consistencies, it will be a problem.


Processor Queue Length – It is the number of threads waiting to get CPU time. As name says if the there are more threads waiting, it shows CPU is more busy. The value of this counter more than 2 times the number of CPUs in the server is an indicator of CPU bottleneck. But always try combine with CPU utilization to conclude the CPU issues.


Available MBytes – It will give the measure of available physical memory in Mega Bytes. During long running endurance tests, if the available memory going down over a period of time even with constant user load, it is good indicator of memory leak in the server.


Pages/sec – Along with Available Mbytes, this counter will give useful information on systems memory usage. If pages/sec is more, it is an indicator of lack of physical memory. There can be situations where Pages/sec shows huge values even with lot of physical memory. These issues can be seen when new processes are creating in the server. One of the classic examples is when users are logging into the Citrix servers. It can not be an indicator of memory shortage and can be due to memory mapped files. Please refer Microsoft documentation for more details.


Private bytes – It shows the dedicate memory of a windows process. It should be monitored to find out the memory usage of a process. Increase in memory usage over a period of time is a good indicator of memory leak. This can be combined with memory utilization to come to final conclusion.



More details on monitoring is coming soon.....
Dinesh

No comments:

Post a Comment