IIS – TroubleShooting – High CPU Utilization – SysInternals/Process Explorer – Day 01

Background

In our last post we spoke on how to troubleshoot IIS using Microsoft’s own Debug Diagnostic Tool ( DebugDiag).

That tool works by first getting a dump of a wobbled IIS process and then training the tool against that up.

Using a set of rules the dump is inspected.

Familiar issues are checked for and if they occur they are grouped and cited.

 

SysInternals / Process Explorer

Introduction

In this post we will use a more rudimentary tool and point it at a running IIS process and do the inspection ourselves.

 

Download

If you don’t have a recent version of SysInternal’s Process Explorer, please download it from here.

The current version is 16.12

Install

No need to install, just run it.

Usage

Start Mode

If not started as an “Administrator”, you will miss some functionalities.

Mode :- User

Mode :- Administrator

Explanation

  1. Tabs
    • Additional Tabs are shown when running as an Administrator
      • Job
      • .Net Assemblies
      • .Net Performance

Application :- W3wp.exe

Disk and Network

Image

Explanation
  1. Get a feel of IO requirements and throughput
    • Network I/O ( Receives VS Sends )
    • Disk I/O  ( Reads VS Writes )

GPU Graph

Image

Explanation
  1. GPU Graph is empty
    • Not doing anything with Graphics Coprocessor

 

Threads

Image

Explanation

Listed are

  1. Number of threads
  2. Individual Threads
    • Thread ID ( TID )
    • CPU ( Ordered by CPU% usage )
    • Start Address
      • clr.dll!DllRegisterServerInternal+0x1f060

TCP/IP

Image

Explanation
  1. Using ephemeral ports on localhost to communicate with backend DB/SQL Server ( ms-sql-s)

Security

Image

Explanation
  1. User :- IIS APPPOOL\DefaultAppPool
  2. Groups
    1. BUILTIN\IIS_ISUSRS
    2. BUILTIN\USERS
    3. CONSOLE LOGON

 

Environment

Image

Explanation

Review:

  1. Processor Identifier
  2. Number of processors
  3. User Domain and Name

 

Job

Image

Explanation

List of Jobs and Processes.

.Net Assemblies

Image

Explanation
  1. Entity Framework
    • EntityFramework
    • EntityFramework.Extended
    • EntityFramework.SQLServer
  2.  Glimpse
    • Glimpse.Ado
    • Glimpse.AspNet
    • Glimpse.Core

.Net Performance

In the .Net Performance Tab, we are able to track different .Net Performance counters.

Inclusive :

  1. .Net CLR Exceptions
    • # of Exceps thrown
      • Number of Exceptions thrown
  2. .Net CLR Threads & Locks
    • Total # of Contentions
    • Current Queue Length
    • Queue Length Peak
  3. .Net CLR Loading
    • Total # of Load Failures

 

Summary

It goes without saying that SysInternal’s Process Explorer gives unending information about the going ons of a running process.

Careful attention to details is needed to gather pertinent data.

It is also helpful to work with actual end users to get an idea of what they will likely doing during various captured events timeline.

An, go back to Development and gauge their understanding of how various APIs stress the system.

 

References

  1. Microsoft Technet
    • Chad Schultz – MSFT
      • How to use Sysinternals Process Monitor and Process Explorer to Troubleshoot SharePoint
        Link
  2. Piers ( Cup(Of T )
    • Production Debugging for Hung ASP.Net 2 applications – a crash course
      Link

 

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s