I’m in the process of migrating biztalk247.com to a new hosting provider. After deploying the application, I started doing the performance testing using Visual Studio Web/Load test features. I configured the IIS Application Pool to have a web garden (more than one worker process w3wp.exe) to serve the incoming requests. The application pool also got settings to recycle the worker process after certain usage of virtual memory/physical memory.
During the test, once the virtual/physical memory limit is reached, the worker process will recycle. As soon as this occurs I started noticing entries in the eventlog with following warning message
A process serving application pool ‘biztalk247’ terminated unexpectedly. The process id was ‘12308’. The process exit code was ‘0xc0000005’. (Event ID: 1009)
and an error message
Faulting application w3wp.exe, version 6.0.3790.3959, stamp 45d6968e, faulting module unknown, version 0.0.0.0, stamp 00000000, debug? 0, fault address 0x001f0001. (Event ID 1000)
Eventually after few of these errors, IIS Application pool will shut down and started getting 503 Service Unavailable.
After doing a bit of research I found this KB article really useful. According to this article, whenever a worker process shuts down it writes some information to the registry at the following location HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices<ASP.NETVersion>Names and there is not enough permission to do so. I checked the location in the server and to my surprise I can’t see the “Names” key. I created it manually and tried to assign the permission to IIS_WPG group as described in the KB article, but as soon as I right-click and select “Permissions” I got some kind of warning message saying the list is not in the order (“I didn’t capture the exact error message”).
For me it looks like ASP .NET 2.0 is not configured correctly. So I decided to uninstall and install ASP.NET 2.0 using the aspnet_regiis (-u and -i switch) to be on the safe side, since its the early stages of deployment.
After doing so, I right clicked on the “Names” key and didn’t see any warnings.
I reran the test again, this time the worker process shutdown properly without any warnings/errors. Looking at the registry revealed ASP.NET has written some values under the key “Names” as shown in the picture below.