Designing browser-enabled forms for performance in InfoPath Forms Services (Part 5)

Part 5 – Addendum: Counters for monitoring form server performance

Welcome to the fifth article in our series on optimizing the performance of InfoPath browser-enabled forms. In our previous articles we defined performance in terms of responsiveness, listed a number of conditions that cause postbacks, and looked at some of conditions that make postbacks more expensive, reducing the responsiveness and scalability of a form system. We also described some of the issues that affect form-rendering performance in the browser and suggested using the Design Checker to monitor browser compatibility issues while designing a form template in the InfoPath Designer.

In this addendum article, we list some useful performance counters you can use in the Windows Performance Monitor (PerfMon) to monitor the behavior of your form server system. Using a combination of general system counters and InfoPath-specific counters to monitor the performance of your servers can help you troubleshoot issues and quantify the performance effects of changes you make to the design of your InfoPath form templates.

System counters for monitoring your form server system

There are two key places where performance bottlenecks can occur in your form server system, on your Web front end (WFE) servers and on your SQL Server back end. The bottlenecks that occur on the front end are normally CPU bound, while the bottlenecks at the SQL Server back end are normally either disk bound or CPU bound.

You can use the following system counters in PerfMon to check the performance of your WFE and SQL Server systems under various load conditions. Use these counters to determine whether your servers are performing at acceptable levels and to help identify any bottlenecks.

Counters for monitoring a WFE server system

  • CPU:
    Processor% Processor Time_Total
    Indicates the total CPU load on the server.

  • ASP.NET:
    ASP.NET Requests Queued
    A linear increase of this counter with user load can indicate that an application is experiencing a bottleneck, either at the front end or the back end. Correlate with other ASP.NET counters, SQL counters, and WFE CPU counter to understand which part of the system is getting bottlenecked.

    ASP.NETRequests Execution Time
    Use this counter to find which type of form template takes more time to execute in the server. In general, forms with managed code require more execution time than forms that don’t. If this counter and WFE CPU counter are high while the SQL transactions/second counter and SQL CPU counter are low, then the bottleneck is at the WFE side. This may be an indication that the form complexity is high or that the form has a lot of managed code.

  • Memory:
    No. of current logical threads
    If the count is increasing, then the thread stacks are leaking.

    Private bytes and No. of bytes in all heaps
    If the count of private bytes is increasing while the number of bytes in all heap counter is stable, then the unmanaged memory is leaking.
    If the count of private bytes is increasing and the number of bytes in all heap counter is also increasing, then the managed heap is building up.

Counters for monitoring a SQL Server system

  • CPU:
    Processor% Processor Time_Total
    Values above 25% indicate a possible bottleneck. Values above 80% signify extreme CPU-bound SQL operations. A linear increase in CPU with user load indicates that SQL will become a bottleneck.

  • Disk:
    PhysicalDiskAvg.DiskQueueLength{Disk_with_SQL_DB}
    Counter should be less than 1.5 or 2 times the number of RAID disks. Correlate with % Disk time counter and Current Disk Queue counter to determine whether the disk is a bottleneck. Decrease your test load to see if the values go down.

    SQLServer:LocksNumber of Deadlocks/sec_Total
    Value should be zero.

  • Memory:
    Pages/sec
    Non-zero value for a sustained period of time indicates that the system is experiencing a high memory load. SQL Server works best when the operating system does not reallocate its memory.

Counters provided by the InfoPath Forms Services performance object

InfoPath Forms Services installs a set of counters that can be viewed in PerfMon. There four types of counters provided by the InfoPath Forms Services performance object: Transaction, Session, Data Connection, and Template/Document.

  • Transaction counters represent all communication between the browser and the server. You can use the transaction counters to monitor how long postbacks are taking to complete and as a gauge for how expensive they are for the server to process.

    Avg. Transaction Duration
    The average time to complete a transaction in form-filling sessions.

    Transactions Started Rate
    The rate at which transactions started in form-filling sessions.

    Transactions Completed Rate
    The rate at which transactions completed in form-filling sessions.

  • Session counters provide duration and rate information for user form-filling sessions. If there are too many active sessions for the server to handle, you will see excessive average durations that indicate a server bottleneck.

    Avg. Session Duration
    The average time to complete a form-filling session, summed up over all transactions in the form-filling session.

    Sessions Started Rate
    The rate at which form-filling sessions started.

    Sessions Completed Rate
    The rate at which form-filling sessions completed.

  • Data Connection counters show the duration and rate of both data connection submit and query activities, along with failures. This will give you an indication of back end performance and how long data connections are taking to complete.

    Avg. Data Connection Submit Duration
    The average time to complete a data connection submit in form-filling sessions.

    Data Connection Submit Started Rate
    The rate at which data connection submits started in form-filling sessions.

    Data Connection Submit Completed Rate
    The rate at which data connection submits completed in form-filling sessions.

    Data Connection Submit Failure Rate
    The rate of failures for data connection submits in form-filling sessions.

    Avg. Data Connection Query Duration
    The average time to complete a data connection query in form-filling sessions.

    Data Connection Query Started Rate
    The rate at which data connection queries started in form-filling sessions.

    Data Connection Query Completed Rate
    The rate at which data connection queries completed in form-filling sessions.

    Data Connection Query Failure Rate
    The rate of failures for data connection queries in form-filling sessions.

  • Template/Document counters give information about the number of forms and form templates that are currently in the ASP.Net cache and in memory. These can help you monitor and detect memory utilization issues on your server.

    # of Cached Form Templates
    The number of form templates that have been added to, and not yet expired out of, the ASP.NET object cache.

    # of Business Logic Assemblies in Memory
    The number of business logic assemblies currently loaded in memory. Administrator-approved form templates may contain zero, one, or more managed code assemblies.

    # of Form Templates in Memory
    The number of form template objects that are currently loaded in memory.

    # of Cached Form Templates in Memory
    The number of forms that are currently loaded in memory.

Server system health monitoring

The general system counters and InfoPath Forms Services counters listed above are useful for monitoring specific issues on a server, but do not provide comprehensive health monitoring for your overall form server system. For that you need to use a solution designed to watch multiple servers for issues that may cause service or performance degradation, such as Microsoft System Center Operations Manager 2007. Operations Manager uses management packs that contain predefined rules, settings, and agents to monitor a specific service or application. For SharePoint, you can download the SharePoint Monitoring Toolkit, which contains the management packs and documentation for both Windows SharePoint Services 3.0 and Microsoft Office SharePoint Server 2007. Note that System Center Operations Manager also provides the capability to customize existing rules or create your own rules.

For more information about the SharePoint management packs for Operations Manager 2007, see the SharePoint Monitoring Toolkit Executive Overview (http://technet.microsoft.com/en-us/library/bb975149.aspx).

For more information about Microsoft System Center Operations Manager 2007, see the System Center Operations Manager TechCenter (http://technet.microsoft.com/en-us/opsmgr/default.aspx).