Anatoly Lubarsky Logo
MSSQL, .NET, Design. Life and Music

Monday, January 04, 2010

Tips for Windows Server 2008 and IIS7 Tuning

Recently I moved from windows servers 2003 32 bit and IIS6 to windows servers 2008 64 bit and IIS7. My experience was rather painful, windows 2008 seems like a wild animal after windows 2003 experience. 2008 has lots networking and scalability issues and it took me quiet a while and many tweaks and hacks to achieve reliability and good performace plus scalability and solve many issues.


If you own a windows 2008 server under some significant load from the web issues described in this post maybe relevant for you. Maybe it may save you some time in desperate searching around the net for solutions...


Before we continue to windows 2008 and IIS7 tips - some relevant info about IIS7.


IIS7 breaking changes

IIS7 introduced new integrated pipeline model where asp.net pipeline is integrated into IIS which has extensibility and performance benefits. This comes together with some breaking changes to configuration and asp.net.


Follow this link to learn more:


asp.net 2 breaking changes on-iis 7


OK, now some tips...


Disable static compression

IIS7 has static compression turned on by default and dynamic compression turned off by default. My first tip is to disable static compression (website - compression in IIS7 manager).


It can be the problem when you have static XML files on you server for example. XML files become unreadable by XML parsers with IIS7 static compression. Browsers and other 3rd parties will not be able to read them anymore because XML is malformed (possible bug?).


Change max concurrent requests per CPU setting

By default IIS7 has a limit of handling 12 concurrent requests per CPU and will queue requests above this limit. If you have some significant web load and many AJAX style requests to your server - this setting maybe very restrictive and it is hard to find out the root of the problem when you server performance is suddenly degraded.


See this post to get the picture how it can cause performance issues on your server.


Some relevant info about asp.net thread usage on IIS7 here:


asp.net thread usage on IIS7 and IIS6


Thomas Marquardt advice is to change this default limit. Recommended settings:


"All of this may be a little confusing, but for nearly everyone, my recommendation is that for ASP.NET 2.0 you should use the same settings as the defaults in ASP.NET v4.0; that is, set maxConcurrentRequestsPerCPU = "5000" and maxConcurrentThreadsPerCPU="0".


This is done by adding DWORD MaxConcurrentRequestsPerCPU to the registry under


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0

called MaxConcurrentRequestsPerCPU (DWORD). This key doesn't exist by default. Or/and in aspnet.config section which overrides registry setting (also doesn't exist by default) aspnet.config is here on windows 64bit:


%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet.config

You need to add the following section under "configuration" section (here I used default values) - don't forget change maxConcurrentRequestsPerCPU to 5000.


< system.web>
    < applicationPool 
        maxConcurrentRequestsPerCPU="12" 
        maxConcurrentThreadsPerCPU="0" 
        requestQueueLimit="5000" />
< /system.web>

Disable offload network enhancements if you have network issues

Different unexplained network issue on your windows 2008 server could be related to TCP Chimney and related "networking enhancements" in windows 2008 and certain hardware vendors when hardware doesn't play well with these enhancements.


If you have networking problems similar to these below - try to disable these features.


Information about the TCP Chimney Offload, Receive Side Scaling, and Network Direct Memory Access features in Windows Server 2008


Related threads:


  1. IIS 7 http status 400 errors
  2. impacts to sql server workloads
  3. the effect of tcp chimney offload on viewing network traffic

Set Connection "close" request header explicitly posting to AJAX web services

When moving from IIS6 to IIS7 integrated mode you may experience issues similar to below (POST request time-outs and request aborted errors) and all related to AJAX POST requests to IIS7 while AJAX GET requests don't have any problem.


Related threads (all unresolved)


  1. a few "Request timed out" exceptions every day
  2. "Request timed out" errors moving from IIS6 to IIS7
  3. Request Timed Out on Windows Server 2008/IIS7
  4. IIS7 Integrated Mode Request timed out

I experienced the same issue. Some HTTP POST requests got aborted in IIS7 pipeline and never reach server code. It can happen one per 1000 requests. However it may be still a significant number and if you have many users it can degrade performance for other requests.


In HTTPERR logs you can notice Timer_EntityBody errors related. POST requests usually arrive split in 2 segments: headers and following request body while GET requests arrive in one segment. On network monitor you can notice that server received POST request headers but request body never arrives to the server and after some timeout IIS aborts such request.


The solution is to set Connection "close" request header on the caller explicitly. Somehow IIS7 doesn't treat it very well, while IIS6 is able to handle missing Connection "close" header. Go figure.


Example for XMLHTTP javascript client:


oXmlHttp.setRequestHeader("Connection", "close");

Enjoy :)

posted @ 4:49 PM | Your thoughts

Thursday, December 31, 2009

Happy New Year

Thanks for all who was around here in 2009 and helped us with great suggestions, feedback and support. We wish you all happy New Year!

posted @ 3:51 AM | Your thoughts

Wednesday, December 02, 2009

Moving

Hello


We are moving to new servers and occasional brief downtimes are expected during December on our sites and apps. Sorry for the inconvenience.


posted @ 12:03 PM | Your thoughts

Friday, September 11, 2009

Fosimo — Backup Facebook Inbox Available

As announced previously backup facebook inbox functionality is now available on Fosimo. It took some time until the app was whitelisted on Facebook in terms of reading users inbox permission but now it should be operational. If you already have Fosimo 1.0.8 it should work.


Download here. Hurry up because maybe it is the first app on Facebook which is capable of doing this. For now your inbox is saved in XML format.


Enjoy :)

posted @ 10:46 PM | Your thoughts

Tuesday, September 01, 2009

Fosimo 1.0.8 — Backup Facebook Inbox

Fosimo 1.0.8 is available. Fosimo is a desktop app for Facebook which helps you control your Facebook account without browsing through Facebook.


Facebook has rolled out several important features recently including new inbox functionality today and new authentication scheme for desktop applications a couple of weeks ago so there are new features and adjustments.


New in Fosimo 1.0.8

  • Improved permissions configuration and authentication (supports recently introoduced "Publish Stream" and "Read Inbox" permission).
  • Improved photo upload functionality.
  • Improved set status (removed "is" verb). This is an old bug on Fosimo but finally fixed.
  • Many fixes and enhancements.
  • Backup facebook inbox: now you can backup your inbox on facebook to your hard drive with 1 click. Please note: Facebook is rolling out new inbox functionality now so it may take a couple of days until this feature is fully available for everyone.


Enjoy

posted @ 9:43 PM | Your thoughts

Running MSI on Windows 7

I didn't try Windows 7 yet. But seems that Windows 7 inherited user access control feature from Windows Vista as is. It maybe useful info for people running MSIs on Windows 7.


I learned it because lifehacker linked yesterday to my 2-year-old post about MSI Error 2869 on Windows Vista where I explained the error and how to deal with it (lifehacker had the same MSI problem on Windows 7). In short — the error is caused by user access control feature and you need to run MSI from command line as administrator as a workaround (or patch the MSI). I was a bit surprised yesterday while reading that 2-year-old post since it seems very techy and it took me a while to fully understand it :). Good coverage after all...

posted @ 9:17 PM | Your thoughts

Wednesday, August 12, 2009

X2line's Audience is Over 2 Million Users (July 2009)

Back in February 2009 we crossed 1 million users mark across all our applications on all platforms combined (link).


In July (or even in June) we reached 2 million. Right now the number is roughly 2243K total users (with more than 1 million users on Friendster alone).


Right now we have 13 applications with more than 50K users each.

posted @ 11:54 PM | Your thoughts

Monday, August 10, 2009

Fosimo 1.0.7 — New Facebook Authentication Scheme

Fosimo 1.0.7 is available. Fosimo is a desktop tool for Facebook which helps you control your Facebook account without browsing through Facebook.


New in Fosimo 1.0.7

  • Quick launch on double-click and slowing down animated windows just like in a Fosimo.TR for Twitter lates version.
  • New Facebook authentication scheme for desktop apps (which works through Facebook Connect) is implemented starting from Fosimo 1.0.7.
  • Many small fixes and enhancements.

Enjoy

posted @ 5:15 PM | Your thoughts

Fosimo.TR 0.5.6 — Quick Tweet and My @responses

Fosimo.TR 0.5.6 is available for download. Fosimo.TR is a light and simple Twitter client for windows which helps you keep track of your Twitter account without browsing through Twitter.


New in Fosimo.TR 0.5.6

  • My @responses: now one can view all @responses on twitter in real time (or "mentions" as twitter calls it). It is one of the items of the main menu.
  • Quick tweet: double-click on the tray icon will open a tweet window for a quick tweet.
  • When moving the mouse over animating icon it slows down. Users complained that small boxes move too fast and we finally address this issue slowing down each box after the mouse was over it.

We have more on our TODO list. We will roll up new versions regularly.


Download now!


Your feedback is appreciated. Don't forget to follow @fosimo on twitter. Enjoy.

posted @ 11:12 AM | Your thoughts

Tuesday, July 21, 2009

Fosimo.TR 0.5.5 — Friends Paging

Fosimo.TR 0.5.5 is available for download. Fosimo.TR is a Twitter client for windows which helps you keep track of your Twitter account without browsing through Twitter.


New in Fosimo.TR 0.5.5: friend list paging. Twitter has a limitation of 100 rows of data per API call therefore for those who have more than 100 friends on twitter (meaning people you follow) we implemented paging. I have 280+ for example.



Also we restored a click-on-animation functionality. Now one can click on animation and get their friend's details in a single click. This way people are able to retweet/reply in just 2 clicks.


A couple of small fixes included in this version as well.


Download now!


Your feedback is appreciated. Don't forget to follow @fosimo on twitter.

posted @ 9:51 PM | Your thoughts

Login

Fosimo
Get Fosimo on CNET Download.com!
Fosimo.TR
Get Fosimo.TR from CNET Download.com!
Subscribe via RSS

Article Categories

.Net Framework
ASP.NET Tips
C# Win32 API
HTML, CSS, Web
Javascript Tips
MSSQL Tips
System
System.Net
WebServices

Archives

(01) January, 2010
(02) December, 2009
(03) September, 2009
(03) August, 2009
(09) July, 2009
(04) June, 2009
(04) May, 2009
(02) April, 2009
(05) March, 2009
(03) February, 2009
(03) January, 2009
(06) December, 2008
(04) November, 2008
(06) October, 2008
(07) September, 2008
(09) August, 2008
(05) July, 2008
(05) June, 2008
(07) May, 2008
(06) April, 2008
(03) March, 2008
(02) February, 2008
(04) January, 2008
(03) December, 2007
(05) November, 2007
(06) October, 2007
(07) September, 2007
(13) August, 2007
(11) July, 2007
(14) June, 2007
(16) May, 2007
(14) April, 2007
(10) March, 2007
(17) February, 2007
(21) January, 2007
(17) December, 2006
(14) November, 2006
(13) October, 2006
(13) September, 2006
(14) August, 2006
(12) July, 2006
(11) June, 2006
(12) May, 2006
(22) April, 2006
(36) March, 2006
(14) February, 2006
(14) January, 2006
(20) December, 2005
(17) November, 2005
(17) October, 2005
(17) September, 2005
(14) August, 2005
(18) July, 2005
(12) June, 2005
(17) May, 2005
(13) April, 2005
(22) March, 2005
(12) February, 2005
(14) January, 2005
(19) December, 2004
(15) November, 2004
(13) October, 2004
(16) September, 2004
(12) August, 2004
(29) July, 2004
(25) June, 2004
(33) May, 2004
(26) April, 2004
(18) March, 2004
(11) February, 2004
(07) January, 2004
(03) December, 2003
(02) November, 2003

Post Categories

.Net and C#
Antispam
App. Development
Architecture
ASP.NET
Blogging
del.icio.us
Fosimo
Fun
Google
Javascript
Misc.
MSSQL
Music
Performance
Roller
Social Networks
Tools
Visual Studio
Web 2.0
WebServices
Yahoo

About Me

linkedin Profile
Recs
Recs Books
Who am I

My Sites

onecone
x2line blogs