IIS Best Practices: From the field...

The field (Julian) dropped a best practice off that was directly from a customer.  This is often the types of questions we get from customers and I kinda liked Julian's response...If there is no clear answer, shower them with options - right? 

We have a customer who is building a ASP.NET site that is expecting 200,000 page hits … on the first day of launching the site!  Is there some good technical documentation or best practices for setting up the achitecture for this type of solution?

I found hist response to be a great running list of things.  With his permission, I thought I would share for an inquiring audience…

  1. Deploy DebugDiag on you Web servers just in case.
  2. Make sure you have IIS Log File time-taken, bytes sent, bytes received, cs(referer) attributes are enabled.
  3. Make sure name resolution is working fine, run netdom, dcdiag on your AD... 
  4. Check your app pool recycle settings by default it will recycle every 1740 mintues... is this what you want? (probably not)
  5. Deploy Server Performance Advisor v2.0 on all Front End servers.
  6. Monitor your virtual memory usage in Performance Monitor and watch the following:

Object\Counter  & Ideal Value

  • Memory\Pages/sec
     0–20 (if over 80, indicates trouble).
  • Memory\Available Bytes
     At least 4 MB.
  • Memory\Committed Bytes
     Not more than about 75 percent of physical memory size.
  • Memory\Pool Nongpaged Bytes
     Steady (slow rise may indicate a memory leak).
  • Processor\% Processor Time
     Less than 75 percent.
  • Processor\Interrupts/sec
     Depends on processor. Up to 1,000 for 486/66 processors; 3,500 for P90; more than 7,000 for P200. Lower is better.
  • Processor\System Processor Queue Length
     Less than 2.
  • Disk (Logical or Physical)\% Disk Time
     As low as possible.
  • Disk (Logical or Physical)\Queue Length
     Less than 2.
  • Disk (Logical or Physical)\Avg Disk Bytes/Transfer
     As high as possible.

There are also some great reads that are recommended for any Web Admin.  Let's start that list right here...

  • .NET Application Performance – Chapter 15 – Measuring .NET Application Performance
  • Internet Information Services (IIS) 6.0 Resource Kit
  • Internet Information Services (IIS) 6.0 Resource Kit Tools 

Other tidbits of recommendations from the field include:

  • Enable LogEventOnRecycle to get all App pool recycling events. (LogEventOnRecycle bit flag property set it to 0xFFFFFFFF)

cscript adsutil.vbs SET W3SVC/AppPools/LogEventOnRecycle 0xFFFFFFFF

  • Stress test you app to “learn” about each page time-taken and how it consumes resources (CPU, Network).
    • Last but not least make sure W2K3 SP1 is deployed plus all hot fixes and run MBSA against the whole platform.
    • Use Log Parser and follow all blogs running on IIS.NET (blogs.iis.net) & also MS.COM Operations

    Enjoy!


     




     

     
     


     
     
     
     
     


    Must read chapters:

    ·          Ch 6: Optimizing IIS 6.0 Performance

    ·          Appx D, E, and F

    IIS 6.0 Performance Counters

    IIS 6.0 Event Messages

    Centralized Binary Log File Format

    ·          Ch 11: Troubleshooting IIS 6.0


    Log Parser is your friend follow MSCOM LP queries:

    http://blogs.technet.com/mscom/


     


     


    Know what are the “heavy pages” and monitor them closely; especially identify where out where your threads may get blocked…

     

    ~Chris

    No Comments