注意:我无法确定这是否更适合Stack Overflow或Serverfault,所以如果您对此有所了解,请告诉我。
背景:最近,我的服务器(Windows 2000,MS SQL 2005,IIS 5.0,ASP Classic)的特定ASP页面流量激增。这种高峰导致处理器大量消耗,使其达到100%并导致访问者出现各种超时问题。
我们实际上处理的流量大于没有错误的流量。问题似乎是被调用的特定ASP脚本使用了大量的处理器时间。使用Sysinternals的Process Explorer,我发现dllhost.exe占用了所有的处理器时间。看看它的线程,罪魁祸首是调用COMSVCS.DLL,它似乎是COM +对象。
所以,看起来我的ASP页面正在调用COM +对象并且它正在杀死我的处理器。
以下是问题:如何确定我的ASP脚本的哪些部分正在调用COM +对象,以及如何从这些部分开始提高性能?我基本上没有Windows编程的背景,所以我不知道如何开始。
感谢您的帮助。
答案 0 :(得分:3)
COM +或DLLHOST都不是您的问题,它们只是网站和COM对象运行的容器。它们被“馈送”的实际对象是您的问题和/或它们的方式/频率由网络应用程序调用。
一种更有效的方法来隔离问题,就是查看处理时间最长的页面的IIS日志,让程序员分析该页面的内容以及调用的对象。
具体来说,请检查IIS日志中的“time-taken”列。
答案 1 :(得分:1)
要确定要调用的对象,请查找
<OBJECT ID=MyObject RUNAT=SERVER PROGID=MyDll.MyObject></OBJECT>
或
set myObject = server.createobject("MyDll.MyObject")
在ASP页面内。
请注意,这可能是调用标准DLL(而不是COM +对象)。实例化的方法对于两种类型都是相同的。
如果您想知道正在运行的COM +进程,请查看组件服务应用程序。
alt text http://img38.imageshack.us/img38/5062/capturerm.png