ASP_0147|500_Server Error

Running IIS 5.0 on w2k server...

I keep finding ASP_0147|500_Server errors in the log.  I have searched the web, and I cannot find out what that error refers to.  It happens really inconsitantly, so I have not been able to trace it to one page.  It seems to be causing problems with the web server, because every so often our site will not load, and it will say, "Not enough storage is available to complete this operation."  There is plenty of hard disk space left, as well as memory.  So, I am not sure what the problem is.  Any help you can give me would be appreciated.
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.

Kinda cryptic hugh?  I don't really have an answer, but this link explains how to make those errors a little more readable,

Also, have you installed Urlscan or the IIS lockdown tool?
CordoeAuthor Commented:
I have both UrlScan and IIS lockdown tool installed.  I looked through the UrlScan logs, and there doesn't seem to be anything out of the ordinary.  Can anyone please tell me what ASP_0147|500 means?  Thanks.
They're pretty generic errors.  ASP_0147 is an asp error code meaning "server error".
The 500 is a HTTP error meaning "internal error".

If you follow through nihlcat's instructions on how to turn off friendly http error messages in your browser you may be able to get a more comprehensive error description if you hit the problem page while it's having a problem.

If you're lucky your iis log may also show up ado errors (eg: 80004005, etc) that might give you a better idea of what the problem is.

Most common causes I've seen are database connectivity/response problems.  Check your database connectivity out, especially that the connection strings being used are correct and operational when tested.
10 Tips to Protect Your Business from Ransomware

Did you know that ransomware is the most widespread, destructive malware in the world today? It accounts for 39% of all security breaches, with ransomware gangsters projected to make $11.5B in profits from online extortion by 2019.

CordoeAuthor Commented:
I already have turned off friendly http error messages.  The error it gives me when I view a page is "Not enough storage is available to complete this operation."  There is plenty of hard disk space left, as well as memory.  

The majority of the errors in the log seem to start right after a webbot has read the site.  Has anyone heard of webbots causing problems?

CordoeAuthor Commented:
I watched the Task Manager during the most recent crash, and there are many copies of dllhost.exe running under the IWAM_XXX account.  When the server goes down, the dllhost.exe file uses approx. 50% of the CPU and the mem usage can get as high as 600,000K.  Has anyone else dealt with this?

"not enough storage" is generally a memory problem which sounds about right looking at your memory usage.  It sounds like part of your site has a memory leak (i.e. failing to release resources).  

What you can try is switching the application protection on content directories you think -may- have problem content over to high.  (IIS Management console, right click directory, properties, Home/Virtual Directory, "Application Protection").
This will set each of the directories up in separate memory spaces and each will show up as a separate component in component services.  The other benefit is that one "application" crashing should not cause the whole site to fall over.

Identify the problem dllhost.exe thread in task manager or use performance monitor logging to track memory use over time.  
Get the process id (pid) of the problem dllhost.exe and then open the component services
snapin for mmc.  
Drill down to "com+ applications" and switch your view on the right hand side over to "status view" to show the process id's of each thread.  Match up the name column to the pid you identified earlier and you've found your problem site.  

Then you need to look at your code and pinpoint the problem.  The best place to start is making your code more efficient, if you need some ideas let me know.

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
CordoeAuthor Commented:

Thanks!  I really appreciate your help.  I continue to work with component services and see what I can find.  

The problem is, I'm not the only one writing code on this server.  But, I'll keep looking.

Thanks again for your help.

If I have any other questions, I"ll post them.  
CordoeAuthor Commented:
One quick question...  I've looked, but can't find the answer.  What causes IIS to create a dllhost.exe file? Is it everytime someone visits a different folder within the web?  And, if the person leaves the folder, should that kill the dllhost file?

Thanks again.
It's the isolation/application protection mode I mentioned earlier.  
"low" = in-process applications and will run in the IIS process (inetinfo).
"medium" = pooled out-of-process applications and will get 1 dllhost thread for all the pooled applications.
"high" =  isolated applications and will get 1 dllhost thread EACH.

If you open up component services (in administration tools) you'll see a list of IIS components under COM+ Applications.  
Webs/Web Directories running in High app isolation have components that look like:
IIS-{Web Description//Root/AppName}

The dllhost thread will appear when the "application" is first activated.  i.e. after a user accesses a page in that site.  
You can see this in action after an IIS reset by clicking on "COM+ Applications" in the left hand pane and making sure you are seeing "status view" in the right hand pane.  When the applications are activated the component icon will start to spin and a process id will come up beside them.

As for dllhost shutdown, I think it's basically until it crashes, gets shutdown manually or an IISReset occurs unless you have configured timeouts.  The default setting is "Leave running when idle" on IIS created components.  
Change timeout is done in component services by right-clicking the component, properties, advanced: "Minutes until idle shutdown" setting.  I would recommend using the default value (3) if you change this.

"manual" shutdown of a particular dllhost thread is by one of the following 3 methods:
-going through IIS console to the application, and clicking "unload" on the directory tab,
-killing the dllhost.exe thread,
-right clicking the component in component services and selecting "shutdown".
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
Microsoft IIS Web Server

From novice to tech pro — start learning today.