P
Phinneas
Howdy,
I have multiple apps running on a pair of dual-processor Win2k IIS servers,
neither of which are domain controllers. My users are experiencing fairly
frequent (10-20 / day) "Server Application Unavailable" errors. I'm using a
custom "Server Application Unavailable" page to send me an email whenever
this occurs. I also have a ProcessHistory page that leverages
ProcessModelInfo.GetHistory() to show me what's going on at the moment of
the error.
Using these tools, this is what I know:
1) The aspnet_wp is recycling every 3 minutes 23 seconds. This is not
surprising considering that the machine.config processModel timeout
attribute is set to timeout="200". Why is it set so low? I'm not quite sure.
Another developer no longer with the company set it that way in an effort to
solve another problem long ago that had to do with the server's inability to
handle more than a few simultaneous requests. Same goes for the other
non-default settings. My processModel section is included below. These
changes were made in the early days of our .NET adoption and I'm inclined to
believe that there may have been other app-level problems that may have
since been resolved.
2) Although webGarden="true" and cpuMask="0xffffffff" I'm seeing that
only 1 of the 2 processes is actually handling requests. The other is always
showing 0 requests during its (short) lifetime. Consequently, Peak Memory
never increases for that process either.
3) As mentioned above, the aspnet_wp is recycling every 3 minutes 23
seconds. The timeout period of 200 seconds equates to 3 minutes 20 seconds.
So, it's taking 3 seconds just to recycle the process. What I've found is
that the Age of the process when the "Server Application Unavailable" error
occurs is around 03:28 - 03:30 and Peak Memory is also at the higher end of
the scale relative to the others.
And this is what I don't know:
1) Why is one process never taking any requests, even though it is
configured in the processModel to do so?
2) During the time it takes for a process to recycle, shouldn't
requests go to the other process, preventing the Server App Unavailable
error?
3) What are the truly optimum processModel settings for my
environment?
Thanks very much for any assistance!
Phinneas
<processModel
enable="true"
timeout="200"
idleTimeout="200"
shutdownTimeout="00:00:05"
requestLimit="1000"
requestQueueLimit="500"
responseDeadlockInterval="00:00:30"
userName="SYSTEM"
password="AutoGenerate"
comAuthenticationLevel="Connect"
comImpersonationLevel="Impersonate"
responseRestartDeadlockInterval="Infinite"
memoryLimit="80"
webGarden="true"
cpuMask="0xffffffff"
maxWorkerThreads="25"
maxIoThreads="25"
clientConnectedCheck="0:00:05"
logLevel="All"
serverErrorMessageFile="d:\wwwroot\ServerAppUnavail.htm"
/>
I have multiple apps running on a pair of dual-processor Win2k IIS servers,
neither of which are domain controllers. My users are experiencing fairly
frequent (10-20 / day) "Server Application Unavailable" errors. I'm using a
custom "Server Application Unavailable" page to send me an email whenever
this occurs. I also have a ProcessHistory page that leverages
ProcessModelInfo.GetHistory() to show me what's going on at the moment of
the error.
Using these tools, this is what I know:
1) The aspnet_wp is recycling every 3 minutes 23 seconds. This is not
surprising considering that the machine.config processModel timeout
attribute is set to timeout="200". Why is it set so low? I'm not quite sure.
Another developer no longer with the company set it that way in an effort to
solve another problem long ago that had to do with the server's inability to
handle more than a few simultaneous requests. Same goes for the other
non-default settings. My processModel section is included below. These
changes were made in the early days of our .NET adoption and I'm inclined to
believe that there may have been other app-level problems that may have
since been resolved.
2) Although webGarden="true" and cpuMask="0xffffffff" I'm seeing that
only 1 of the 2 processes is actually handling requests. The other is always
showing 0 requests during its (short) lifetime. Consequently, Peak Memory
never increases for that process either.
3) As mentioned above, the aspnet_wp is recycling every 3 minutes 23
seconds. The timeout period of 200 seconds equates to 3 minutes 20 seconds.
So, it's taking 3 seconds just to recycle the process. What I've found is
that the Age of the process when the "Server Application Unavailable" error
occurs is around 03:28 - 03:30 and Peak Memory is also at the higher end of
the scale relative to the others.
And this is what I don't know:
1) Why is one process never taking any requests, even though it is
configured in the processModel to do so?
2) During the time it takes for a process to recycle, shouldn't
requests go to the other process, preventing the Server App Unavailable
error?
3) What are the truly optimum processModel settings for my
environment?
Thanks very much for any assistance!
Phinneas
<processModel
enable="true"
timeout="200"
idleTimeout="200"
shutdownTimeout="00:00:05"
requestLimit="1000"
requestQueueLimit="500"
responseDeadlockInterval="00:00:30"
userName="SYSTEM"
password="AutoGenerate"
comAuthenticationLevel="Connect"
comImpersonationLevel="Impersonate"
responseRestartDeadlockInterval="Infinite"
memoryLimit="80"
webGarden="true"
cpuMask="0xffffffff"
maxWorkerThreads="25"
maxIoThreads="25"
clientConnectedCheck="0:00:05"
logLevel="All"
serverErrorMessageFile="d:\wwwroot\ServerAppUnavail.htm"
/>