IIS v6 App Pool and Worker Processes questions.

IIS v6 running on Win2003, 2 gb of ram, 3.2 mhz processor.

Is there a limit on the number of Application Pools that can be created?
Should an Application Pool be created for each virtual directory?
Should the default AppPool Properties be changed? Example one site's much busier than another.
If your enabling CPU monitoring is there a rule of thumb setting for maximum cpc use?  The default is 100% which seems a bit high.

Is there a limit on the number of Worker Processes that can be set for an Application Pool?
Is there a rule of thumb setting for the number of Worker Processes that should be assigned to an Application Pool?
I have Worker Process errors being logged in the Application Events log, "faulting app w3wp.exe".  How can you determine which site is generating the error message?
mobotAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

harperseCommented:
Hey mobot,

Lots of questions, eh?  I'll try to address one by one

Is there a limit on the number of Application Pools that can be created?  --> No, but you will experience performance issues somewhere between 60 and 90.

Should an Application Pool be created for each virtual directory?  --> There is no need to do that, unless you expect to experience high utilization from a specific VDir.

Should the default AppPool Properties be changed? Example one site's much busier than another.  --> Tweaking app pools is kind of a touchy subject.  I never change app pool properties, and have never had a major issue, due to the new architecture of IIS6.

If your enabling CPU monitoring is there a rule of thumb setting for maximum cpc use?  The default is 100% which seems a bit high.  --> CPU monitoring and FailFast are great in theory, but don't really work that well.  If you expect any process to use 100% CPU on a regular interval (monthly or bi-monthly reporting, for example) you should look into Web Gardens (more than 1 app pool per application)

Is there a limit on the number of Worker Processes that can be set for an Application Pool?  --> There is an upper limit, but I do not know if it is published anywhere.  It probably depends on available resources on the server/servers.

Is there a rule of thumb setting for the number of Worker Processes that should be assigned to an Application Pool?  --> In my opinion, 1 site gets one app pool (worker process).  From there, grow with web gardens.

I have Worker Process errors being logged in the Application Events log, "faulting app w3wp.exe".  How can you determine which site is generating the error message  --> Post the event log event ID and message, and I'll try to show you what to look for.  The httperr.log can also be of some assistance in these cases.

Best of luck,
harperse
mobotAuthor Commented:
Well, thanks partner for having a go at my laundry list.  We all gotta start somewhere, eh?  Here's the event log error.

Event Type:      Error
Event Source:      Application Error
Event Category:      (100)
Event ID:      1000
Date:            9/5/2006
Time:            5:06:51 PM
User:            N/A
Computer:      
Description:
Faulting application w3wp.exe, version 6.0.3790.1830, faulting module lt_isEng.dll, version 5.2.0.1286, fault address 0x000088fa.

harperseCommented:
That means that the ISAPI filter, It_isEng.dll is not laoding correctly, or something is happening when it is loaded.  Do you know any more information regarding that DLL?  Another user recently asked about it, and I found it to be somewhat suspicious.  A Google search turned up nothing about it.

Unload the ISAPI module, if you don't know what it does either, and you should be fine.

Best of luck,
harperse
Become a Certified Penetration Testing Engineer

This CPTE Certified Penetration Testing Engineer course covers everything you need to know about becoming a Certified Penetration Testing Engineer. Career Path: Professional roles include Ethical Hackers, Security Consultants, System Administrators, and Chief Security Officers.

Chris DentPowerShell DeveloperCommented:

I just wanted to add a little to everything Harperse has already posted :)

> Is there a limit on the number of Application Pools that can be created?  --> No, but you will
> experience performance issues somewhere between 60 and 90.

Not entirely true. There is a limit of around 60 (or a little above), that much is absolutely true. But it's possible to run far far more application pools than that. However, you need to alter a registry key to do it.

Value: UseSharedWPDesktop
Key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\Parameters
Data: Change from 0 to 1

Documented here:

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/d779ee4e-5cd1-4159-b098-66c10c5a3314.mspx?mfr=true

And just to quote:

> If you are setting up your application pools with unique identities, then depending on the applications
> and memory resources on your server, you will reach a limit of about 60 application pools. There are
> finite limits of some system resources that get allocated with each new logon session. This means that
> 60 processes can run concurrently as distinct accounts. IIS 6.0 supports running these processes in
> a single shared workstation and desktop, at a cost of sharing a single encapsulation of a user session
> among all parties. To scale beyond 60 application pools and to share a single desktop, change the
> UseSharedWPDesktop to a DWORD value of 1. After changing this registry key, you should be able
> to scale to hundreds of application pools and hundreds of concurrently running worker processes.

It's more secure and fault tolerant to run the applications without the Shared Desktop. But it depends a little on what you want the web server to do.

And just one more little bit:

> I have Worker Process errors being logged in the Application Events log, "faulting app w3wp.exe".  
> How can you determine which site is generating the error message  --> Post the event log event
> ID and message, and I'll try to show you what to look for.  The httperr.log can also be of some
> assistance in these cases.

Since I also go for 1 Application Pool (with a distinct name) per Website it can make it a lot easier to see where the error is occuring. In addition to the items mentioned by Harperse you can download the IIS 6 Resource Kit which comes with a utility called IIS State - this would allow you to monitor a specific Worker Process (by Process ID) which can allow for more advanced troubleshooting.

You can download the Resource Kit here:

http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&DisplayLang=en

HTH

Chris

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
harperseCommented:
mobot,

Chris is absolutely right.  In fact, I recently posted that solution myself for another thread, http://www.experts-exchange.com/Web/Web_Servers/IIS/Q_21975041.html.

This is what makes EE so great, the fact that no matter what I forget, someone else is there to cover my back.

And Chris, I never really used IISState.  Now that I know it's function, I have another tool for my utility belt.

Best of luck,
harperse
mobotAuthor Commented:
Thanks to both of you.  A colleague who is a web developer had downloaded the IISState tool and got it working and it picked up the error late yesterday afternoon.  Turns out the It_isEng.dll is part of an imaging app from LizardTech, and the file is missing.  Lizardtech has a utility "regall.bat" that supposed to fix that problem.   Below is some of the output from the IISState dump.  Seems only fair to increase the points and split them.

Opened log file 'C:\iisstate\output\IISState-2316.log'

***********************
Starting new log output
IISState version 3.3.1

Wed Sep 06 16:52:28 2006

OS = Windows 2003 Server
Executable: w3wp.exe
PID =  2316

Note: Thread times are formatted as HH:MM:SS.ms

***********************


IIS has crashed...
Beginning Analysis
*** WARNING: Unable to verify checksum for \\?\D:\LizardTech\ExpressServer5.2\ImageServer\lib\lt_isEng.dll
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for \\?\D:\LizardTech\ExpressServer5.2\ImageServer\lib\lt_isEng.dll -
DLL (!FunctionName) that failed: lt_isEng!ltcsGetErrorMessage
Chris DentPowerShell DeveloperCommented:

Glad I could help out a little :)

Chris
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Web Servers

From novice to tech pro — start learning today.