I have a web application that sometimes just hangs over heavy load. To make it come back I have to kill the "dllhost.exe" process. Does someone know what to do?
This is an Classic ASP (VBScript) app with lots of COM+ objects.
The server has the following configuration:
Intel Core 2 Duo 2.2 GHz / 4 GB RAM
Windows Server 2003 Web Edition SP2
IIS 6.0
There is some errors in the event log related to the COM objects. But why errors in the COM objects would crash the whole server?
The COM objects are PowerBuilder objects deployed as COM objects.
Is IIS 7.0 (much) more stable than IIS 6.0?
Sounds like dodgy COM objects causing the problem .. do you load them into the "Application", if you do then are they threadsafe; or are they used and discarded on each request?
Yes, recycling every few hours would help 'hide' the problem, but they ought to be debugged and fixed properly ... have you tried divide/conquer to discover which COM object is the problem ... I can imagine this is tricky on a production environment so you need to set up some heavy automated tests to reproduce the problem locally then you can do something about it.
You have a memory leak :)
This blog entry is my bible for IIS troubleshooting:
http://blogs.msdn.com/david.wang/archive/2005/12/31/HOWTO_Basics_of_IIS6_Troubleshooting.aspx
If you can't audit your code and find where the reference leaks are, an alternative is to recycle the application by restarting IIS every 24 hours or so. You can just setup a commandline script as a server job to do this.
There is probably some errors in your eventlog under the Application and System categories. Try to find the origin of these errors or post them here we'll see what we can do :)
Edit :
#Daniel Silveira
A memory leak is probable. What COM+ object do you use? I had some issues with Excel with an application I support.
Related
I am struggling with an issue and am utterly lost as to the correct approach to handle the problem.
I have an MVC 5 application running on Windows Server 2008 R2 that communicates with an accounting package (Exchequer) via an unmanaged COM dll. As I understand it (and I'm not sure I do) the unmanaged dll is created once per app domain? Meaning that multiple users of the app will all be 'using' the same unmanaged instance? Ideally, I would want one instance of the COM dll to be created and destroyed per user. Can anyone please tell me if this is possible and, if so, how I would go about implementing it? Thanks
We have an asp.net core application hosted in azure as web-app.
We have pretty big front-end including few javascript files, images and html.
And sometimes, request for a static files(for instance something.js) just runs into endless process and replies after long delay with status 502 Bad Gateway. It happens not often, but it is a big problem for us. All our static files are placed under the wwwroot directory.
Have someone experienced something similar?
So ok, after few days of investigation together with team we came up with next solution. We have updated version of ASP.NET Core to 1.1 and the problem was solved. This problem cannot be reproduced when you deploy your application on local-IIS only on azure.
I am not sure, which team of MS have produced that bug(azure team or ASP.NET core team). But it is sad that quality of MS products have dramatically decreased during last 2-3 years.
So don't blame your self too much when some unknown bug appears in your code, probably it is a gift from MS. ;)
It seems this issue is well documented and should be addressed in the upcoming .NET Core 1.1.1 patch (set to be released tomorrow, 03/07/2017).
https://github.com/aspnet/IISIntegration/issues/311
For work, I need a free web server system to host a few web apps that I will develop. The server will be installed on Windows. The apps will need to be able to access a bunch of files on the intranet, and massage them. Mostly 10 people at same time will be using the apps. I would prefer to write code in .NET as it contains many great APIs, but I am not sure if the latest IIS Express has any major restrictions (number of clients connected to web server or database, etc.).
The other web servers I looked at (which are not .NET) are:
glassfish - seems that many are switching from it since Oracle stopped supporting it
wamp servers - there are many, the other day I installed wampserver and wrote an app in PHP to see how good it is. I must say PHP was very slow accessing my intranet files and processing them.
oracle weblogic server - never used it and have no idea how good it is
tomee - seems to be new and I do not know how good it is for web application development
I am wondering what do you recommend?
Thank you
first of all I very invested in TomEE. That here here is my feedback:
weblo, TomEE and GlassFish are java servers where wamp is a php/httpd one. Depending what you target it can be enough to make a choice (investment for java is more important than php).
If you choose java then weblogic is not free AFAIK.
Then TomEE is very close to TomEE giving you just all the power you need for web development so it is a safe choice (you'll benefit from a lot of integration and tools for free).
GlassFish is not bad by itself and the best way to select one server is to test it with a small app in your environment IMO.
Just like we have SQL Profiler tool which gives us info as what SPs, queries are running in SQL Server
Similarly i want to know is there a tool for IIS so that i can know which DLLs are being used while i run my website in localhost.
WinDbg and SOS will help you out:
Investigating ASP.Net Memory Issues using WinDbg and SOS
Here are a couple of great resources on using WinDbg, SOS and ADPlus:
If broken it is, fix it you should (Tess Ferrandez)
Speaking of Which (Johan Straarup)
I have a problem with IIS 6.0 ceasing to work for an ASP.NET application after installing Service Pack 1 for .NET 3.5.
I have 2 identical virtual dedicated servers. Installing SP1 on the first had no adverse effect. Installing it on the second caused ASP.NET pages to start returning 404 page not found.
Static .html pages working okay on both servers.
Has anybody else experienced this?
This is broad problem, so let's start by asking some troubleshooting questions:
Based on your description, the ASP.NET runtime is not catching your request and processing the aspx files. You may need to register the asp.net pipeline with IIS again using ASPNET_REGIIS -i.
Have you made sure that the app_offline.htm file has been removed
from the directory of the application?
I have had this happen before after an
update.
Have you setup fiddler for instance to follow the request to see what is
exactly being requested?
Make sure ASP.NET is enabled in the IIS Administration Console under "Web
Service Extensions." Make sure everything is set to allowed for your different versions of the framework.
Well, let's start with those and hopefully we can guide you to the problem.
I've seen various people with this problem recently. This link might help.
And this one.
And a few others.
Is CustomErrors in your web.config set to On or RemoteOnly? If so, what do you get when you change it to Off?
I have not had this exact error with .NET 3.5 SP1, but have seen similar occur in the past. Typically it can be resolved by opening a command prompt, going to the appropriate .NET folder and running ASPNET_REGIIS -i. In the case of .NET 3.5 there wasn't an update to the main bits of the framework, so you'd actually go to the .NET 2.0 folder, which on my machine can be found at:
\Windows\Microsoft.Net\framework\v2.0.50727
Running the ASPNET_REGIIS -i will re-register all the ASP.NET libraries with IIS, and should be the equivalent of a re-install of the framework on a given machine (as far as IIS is concerned)
Just to clarify. The last (4th) point given by Dale was the problem. During the installation of SP1 the Status for ASP.NET and WebDAV became set to Prohibited under Web Service Extensions.
Why the installation of SP1 changed this setting on one server and not the other is a mystery that I wouldn't mind (but not expect) an answer to...
The second link provided by CodingTheWheel also had the answer so I'm also going to mark this as an answer.
No-one did before, so I'll point to the trivial solution:
Have you already de-installed the Service Pack and re-installed it again (or the whole framework)?
Edit: #Kev:
Easy explanation: He said the update works on one machine, but not on the other. I had similar problems in the past and re-installing helped to solve some of them. And it is trivial to do.
That's my approach:
1. trivial
2. easy
3. headache
You are right, on productive systems you must be careful, but that's his decision. And because it is a virtual server, maybe it is easy for him to copy it and try as a test environment first.