January 2006 - Posts

Mm.... this is kinda late, but heck there wasn't one scheduled for this month [:)]. I posted this last year and the typo is still there!! Chris....yoohoooooooo, you there? no shows this month? is the RSS working at all? I saw bunch of 'Get the Most from your IT Investment' events....[:P] Wassup??

Updated: Confirmed, there won't be any webcasts for January as well as March (Chris is busy), Stay tune for February details later this month.

Posted by qbernard | 1 comment(s)
Filed under:

Last year, Microsoft released the first version of IIS diagnostics toolkits with
Log Parser 2.2
SMTPDiag 1.0
AuthDiag 1.0
SSLDiag 1.0 (Edited 18th Jan - It should be SSLDiag 1.1 with few enhancements, there's a typo in installation screen)

This morning, a new version of the toolkits was published at Microsoft Download. With additional members including:
DebugDiag 1.0 - [:D]Finally - this is RTM !!!!
and Wfetch 1.4 - A must have http connection troubleshooting tool. Old version can be found
here.
(Also, if you are deploying this on IIS 6 machine, you will see TraceDiag as well. This is the event tracing toolkit for IIS 6.0)

Wohooo... let's change the name for Log Parser and Web Fetch to:
LogDiag 2.2 and WebDiag 1.0 :) to complete the diagnostics toolkits family.

Anything else? Mm.... metabase? well, we got MetaEdit and Metabase Explorer which also do certain checking when it opens up the metabase...
Would be nice to see FTPDiag? to check on ftp user access right, isolation mode, permission, passive/active mode issue...
NNTPDiag? well - forget it. You won't see NNTP in IIS 7 I think......... shhhhhh...... shhhhh.... :p
So what else? ....  ConfigDiag? as IIS 7 is pretty much align with the web.config file style of asp.net 2.0.  or maybe ModuleDiag as IIS 7 enables you to include your own modules to extend the web server capability [:)]

Posted by qbernard | 4 comment(s)
Filed under:

Came across this great article from the TechNet Magazine which talked about different tips to boots up IIS performance. While the previous blog I posted was more on getting the resources on optimizing and tuning your IIS server, this article focus on few simple tips that you can do it without referring to any document or help file. Let's see what do we have here:
1) Enable HTTP Keep-Alive
This setting is enabled by default. Set a side that this could improve client connection experience, this must be enabled in order for integrated authentication or all connection based authentication to work.

2)  Adjust Connection Timeouts
Right on the spot, as highlighted by the author. You may want to adjust this according to your needs. To me, I felt 120 seconds is way to long for a connection timeout. Typically, I set for 30 to 45 seconds, if "I', the IIS server take longer than that to response to client or waiting for data, I would just drop it. No point holding the resource for more than 30 seconds :)  Obviously, you need to evaluate your environment to derive the correct timeout value.

3)  Enable HTTP Compression
Yes, some prefer third party tool like httpzip or xcompress. While if you like me. I will stick with the built-in compression feature. Refer this kb to add in more document types for compression:
234497 How to specify additional document types for HTTP compression

4)  Grow a Web Garden
This can be tricky, although this will boots up your application response time, do take note that if you are using any session variables make sure you have out-of-process session management in place, otherwise - since all worker processes inside the web garden do not share the memory space, having an in-process session management will cause session detail lost if the request was previously handle by other worker process. The following KB explains about the session management for ASP.NET.
307598 INFO: ASP.NET State Management Overview

5) Adjust the IIS Object Cache TTL
Great suggestion, the default value is too fast. Typically, I would go for 60 seconds at least. Unless, your site is pure dynamic and content must not be cached. In related to this Object TTL, You would also have the UserToken TTL, by default this is 15mins, which I think suitable for most of the setup. If you have a pretty dynamic user accounts management. E.g. temp account created on the fly and only valid for a short period, you might want to shorter the value. With IIS 6, setting it to '0' will disable the UserToken cache. More info, refer
152526 Changing the Default Interval for User Tokens in IIS

6) Recycle
Specifically, apply to IIS 6 only. While most users will stick the default, I on the other hand will disable all recycling event coz I think if an application is well-written and tested. It should not behavior weird and causing issue :)  Well, this is just my wish, in real life - especially those IIS that you manage? For sure haunting you from time to time. I remembered in the past where developer always complaint about “something wrong with your IIS configuration’, while you, the system admin on the other hand keep fighting back saying that you are innocent, it is the code that causing this. Until, you find way to prove that it has nothing to do with IIS and the problem is with the application, your boss would typically go with developer :)  Anyway - back to the topic. If you are seeing problem with your application, you should use any of the recycle events to keep up the application availability until you figure out what's wrong. Also, always checked 'shutdown worker process after being idle for' for X minutes. Recycling is good, not only it refreshes your application (sometime I don't agreed with this view), but it also returns the unused resource by to the system pool. Oh ya! What do you do with IIS 5? Well, you can try the IIS5 process recycling tool, refer
322350 How to recycle IIS 5.0 with the IIS 5.0 Process Recycling tool

7) Limit Queue Length
I'm happy with the default limit, there's typo in the article. Default is 4000 not 1000 :) And of coz at any time - you should not see lot of queue requests, if you do see that, meaning you are either experiencing hardware bottleneck or something really wrong with your application.

8) Shift Priority to the Working Set
I am lazy :) I never really change this setting unless is for SQL server. When you running on a low power box with less cpu power and memory - you should look into this.

9) Add Memory
Mm.... to my standard - I have lot of budget - my web server are typically equipped with 2GB memory and this is good enough for most of the web application out there. Of coz, depending on the number of users and application nature - you may need more ram or even setup network load balancing. In the past, I have been seeing to boots up web server you need more CPU processing power, while database server needs tons of memory. That's just what I have experienced, anyway - for you to make the right call - always do a performance monitoring to determine if memory is a bottleneck.

10)  Use Disk Striping
This is like a bonus. In my opinion, since you have no control for the IIS binaries reside on the system partition, you should have maximum read output for your website pages, and maximum write performance for the log files. Hence, you should have a mirrorset for web pages, and disk striping without parity for the log files. Also, it always the best practice to have the above (IIS binaries, Web pages, IIS log files) in three different partitions/drive and secure it properly with NTFS permissions.

Posted by qbernard | with no comments
Filed under: ,

First post for 2006 :)  Here you go...
908739 FIX: Incoming client may not be processed when the worker process for an application pool is recycled in IIS 6.0
892987 Error message when you try to import a certificate backup file in Internet Information Services 6.0: "Cannot import Key Ring backup file"
909289 You may receive “Out of memory” error messages when you run a multithreaded program that uses the IIS ADSI provider on a Windows Server 2003 SP1-based computer

OT: I'm sure you have read alot about the recent WMF exploit, Microsoft has officially released an out-of-band security patch, get it here.

Posted by qbernard | 2 comment(s)
Filed under: