Domanda

Nota:. Non riuscivo a decidere se questo è stato più appropriato per Stack Overflow o Serverfault, quindi se avete qualche informazione in questo, me lo faccia sapere

Sfondo: Recentemente, il mio server (Windows 2000, MS SQL 2005, IIS 5.0, ASP Classic) ha subito un picco di traffico di uno specifico insieme di pagine ASP. Questo picco ha causato una fuga massiccia sul processore, chiodare è al 100% e causando tutti i tipi di problemi di timeout per i visitatori.

Abbiamo in realtà gestita maggiori volumi di traffico di questo senza errori. Il problema sembra essere che gli script specifici ASP chiamati stavano usando una quantità enorme di tempo del processore. Utilizzando il Process Explorer da Sysinternals, ho scoperto che dllhost.exe stava prendendo tutto il tempo del processore. Guardando i suoi fili, il colpevole era chiamate a Comsvcs.dll, che sembra essere oggetti COM +.

Quindi, sembra che le mie pagine ASP stanno chiamando oggetti COM + e sta uccidendo il mio processore.

Ecco la domanda: Come faccio a determinare quali parti del mio script ASP stanno chiamando gli oggetti COM +, e come avrei cominciare a migliorare le prestazioni da queste parti? Non ho praticamente alcuna esperienza nella programmazione di Windows, quindi sono in perdita di come iniziare.

Grazie per il vostro aiuto.

È stato utile?

Soluzione

Né COM + o DLLHOST sono probabilmente il problema, sono solo i contenitori che il sito web e oggetti COM sono in esecuzione in. Gli oggetti reali che vengono "nutriti" sono il problema e / o modi / frequenza stanno essendo chiamato dal web app.

Un modo più produttivo per isolare il problema sarebbe quello di esaminare i registri di IIS per le pagine con il maggior tempo di elaborazione e di avere un programmatore di analizzare quello che sta succedendo in quella pagina e quali oggetti sono chiamati.

In particolare, controllare la colonna "time-taken" nel registro di IIS.

Altri suggerimenti

Per determinare quali oggetti vengono chiamati, cercare

 <OBJECT ID=MyObject RUNAT=SERVER PROGID=MyDll.MyObject></OBJECT>

o

 set myObject = server.createobject("MyDll.MyObject")

dentro le pagine ASP.

Attenzione che questo potrebbe essere chiamata DLL standard (non oggetti COM +). Il metodo per l'esecuzione dell'istanza è lo stesso per entrambi i tipi.

Se volete sapere che cosa COM + processi sono in esecuzione, controllare l'applicazione Servizi componenti.

alt text http://img38.imageshack.us/img38/5062/capturerm .png

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top