2

I am working on a set of Classic ASP (VBScript) websites under different domains with 64bit Access (2013) database connection. Server is a shared Windows Server 2012 with IIS 8.5. The sites were not coded by me.

Everything seems to work fine for a time, but after several page calls (sometimes also at the first or only call to the site) the server does not respond for more than 20 to 30 seconds. This means: I can't call ANY page hosted on this server, even all other websites under different domains stop working for that time.

I am not sure, if plain HTML pages will respond, but it seems not. After such an issue everything is running fine again for various periods (up to 1 or 2 minutes), pages show up with normal response time, then this system hang repeats. And so on…

Finding the problem is extremely difficult, because all the sites on this shared hosting server could possibly cause this behaviour, it not necessarily seems to be triggered by my specific page call or subsequent calls, though it could be.

I am not sure, where to even look for the problem. I searched this forum and noticed some interesting answers, but not exactly to our problem. I tried Sysinternal's Process Monitor on a virtual server, where only one specific site is hosted and the same issues exists, but was not able to interpret most of the messages. I looked into event viewer log at this machine and noticed entries saying:

A trappable error (C0000005) occurred in an external object. The script cannot continue running.

But even if that sounds to be a possible reason, I am not sure where to look in the script or a log file, where I could find the trigger of all that. And on the shared host I don't even have the possibility to do that. On our local 'internal webserver' under Windows 10, where local copies of all the sites reside, I can. But I'm not sure, where to start my search.

Any help would be appreciated (and please don't needle me with proposals for switching to ASP.net or SQL - this is not possible at the moment).

Ansgar Wiechers
  • 193,178
  • 25
  • 254
  • 328
Schnuffi
  • 31
  • 3
  • are you using any file upload components? maybe try using this tool for more info: https://forums.iis.net/t/1153645.aspx – Josh Montgomery Sep 05 '17 at 20:11
  • Thank you Josh for your input. Yes, Persits ASP-Upload is implemented in this sites, but: it should only be integrated in the code, if neccessary (e.g. pages with a form to sign up for something), only very few of the sites really engages it on the frontend and even fewer site-visitors use it. – Schnuffi Sep 06 '17 at 07:51
  • Thanx also for the link, I am not sure, if we are able to install that at our providers server (maybe on the virtual server, but not on the shared host)... and in consequence to understand how to use it :-( What would really help us: WHERE should we search for an error message - event viewer log, server log...? I hope, it MUST be visible somewhere, when the server completely stops serving .asp pages for half a minute (as I mentioned before, it seems, plain html-pages still work, so only the asp-engine seems to be compromised) and what triggered ist. But where to search for that sign? – Schnuffi Sep 06 '17 at 08:00
  • Have you checked all the answers posted in [this question](https://stackoverflow.com/questions/4649487/classic-asp-c0000005-error-on-execution)? (when replying here please use `@name` so that I'll be notified, e.g. `@Shadow` is enough.) – Shadow The GPT Wizard Sep 06 '17 at 08:48
  • this is most likely due to a corrupt DLL in your setup. Checking each Server.CreateObject call is a good place to start. I would also try reinstalling aspUpload. This can also happen if you don't close and destroy your objects created with CreateObject, as it'll cause a memory leak.If you can create a scenario where it fails consistently on a particular page, then you can use that page as a test and start commenting out lines of code until you get to the problem. – Josh Montgomery Sep 06 '17 at 13:28
  • @Josh Montgomery Thanx for your ideas! I can't image a corrupt DLL, even if I read about that. Checking de CreateObjects seems to be the (long) way to go. As this all happens in big sites with a CMS and functionality distributed across countless files, we are not able to work out a single page triggering the fail. I guess we'll need a server expert to help us interpreting error logs and event viewer errors... – Schnuffi Sep 12 '17 at 08:37

1 Answers1

-1

I work with huge classic ASP application this error normally happens in a call for a Server.CreateObject('foo'). We have this kind of error here normally at the excel object when someone try to upload a very large .xls file. I would start mapping all the Server.CreateObject.

  • thanx for your great advice! We thaught about something similar, e.g. opened, but not closed objetcs. What do you mean by "mapping all the Server.CreatObject"? – Schnuffi Sep 06 '17 at 07:42
  • I wanted to say that you could use something like sublime text and search for Server.CreateObject, I know that is a lot work to do. I was thinking and probably the fast way is activate the detailed errors, with this activated when the error occurs to the user, it will appear with file name and the line where the problem happens. If you are at windows server 2012 this options is available at the iis panel on asp option. – Gabriel Dos Santos Sep 06 '17 at 10:06
  • Thanx for your kind inputs! We already activated detailed errors, but as this happens on a shared server, where every other of our sites can cause the error, it normally doesn't happen, that we see an actual error on the site triggering it, but only the consequences (delay of 30 seconds) on one of the others. Checking all the Server.CreateObjects will be the most promising, but horrifying strategy, because it is a big set of sites with a CMS in the background, where all functions and scripts are distributed acrros countless files... We'll try sublime editor. – Schnuffi Sep 12 '17 at 08:34