2012-03-01 10 views
5

Ciao,Come utilizzare i contatori delle prestazioni e il servizio WCF in IIS?

Ho un servizio WCF in IIS7 che comunica con un'applicazione WinForm su TCP (WAS), ora ho bisogno di monitorare le prestazioni.

ho aggiunto questo al file web.config:

<system.serviceModel> 
    <diagnostics performanceCounters="All" /> 

Dopo l'apertura della Performance Monitor corro un paio di prove con la mia WinForm per assicurarsi che il servizio è attivato.

Quindi apro Performance Monitor (live), clic destro e aggiungi contatori. Espandi ServiceModelService 4.0.0.0 e seleziona Durata chiamate e chiamate, inoltre seleziono il mio servizio (svc) che è indicato nella casella di riepilogo Istanza dell'oggetto selezionato e fai clic sul pulsante Aggiungi.

Quando si seleziona Durata chiamate e chiamate in ServiceModelOperation 4.0.0.0 non è tuttavia possibile selezionare Instance o operazione? Lo stesso vale per ServiceModelEndpoint 4.0.0.0?

Quando si fa clic su OK, verranno aggiunti due contatori (ServiceModelService).

Quindi faccio clic su unfreeze display e avvio la mia applicazione winform che effettua un paio di chiamate, tuttavia non vedo nulla in Performance Monitor. Ho provato a fare clic destro su uno dei contatori delle prestazioni e selezionare "Scala contatore selezionato" ma questo non fa nulla?

L'obiettivo è semplicemente quello di valutare l'efficienza del servizio WCF (velocità, durata, quantità, connessioni e così via) e sarebbe anche opportuno controllare le singole operazioni.

Si prega di aiuto!

Nota: questo è l'articolo che ho cercato di seguire: http://dkochnev.blogspot.com/2011/06/wcf-framework-40-monitoring-service.html

risposta

2

servizi WCF comprende contatori delle prestazioni che possono essere monitorati attraverso il Windows Performance Monitor (Perfmon.exe). È possibile avviare questo dalle Strumenti di amministrazione in Windows Server 2003.

contatori delle prestazioni possono essere attivati ​​dalla sezione di diagnostica del file config per il servizio, come mostrato nella seguente configurazione di esempio:

<configuration> 
    <system.serviceModel> 
    <diagnostics performanceCounters="All" /> 
    </system.serviceModel> 
</configuration> 

si consiglia di controllare questi articoli, che vi può guidare su come utilizzare i contatori di prestazioni per i servizi WCF:

+4

Hai letto il mio post? questo è ciò che sto facendo, ma non ho alcuna lettura? Potrebbe essere perché sto usando messageInspectors in WCF? – Banshee

+0

@Banshee, c'è qualche possibilità che tu possa aggiornare questo con la tua eventuale soluzione, se esiste? Sono d'accordo che questa è una risposta orribile. – Dan

4

Sembra che questo potrebbe essere un bug (o un disegno di funzionalità) di come i contatori di prestazioni di lavoro. Dopo alcuni tentativi, ho trovato questo sul MSDN forums:

Ho lo stesso problema.Sembra che Microsoft tronca la coda del nome dell'operazione durante la denominazione dell'istanza del contatore. Essi sostituiscono la parte troncata con una sorta di numero magico di base 10 cifre a 2 cifre . Sto indovinando che è un hash, ma chissà come è in realtà generato . Lo sfregio è che questo numero non è garantito unico e può causare collisioni nei nomi dei contatori. Se si verifica una collisione di questo tipo, sembra che tutti i contatori dell'endpoint e dell'operazione scompaiano (a meno per me).

Ho due metodi denominati UpdateMarkupChunk e UpdateMarkupCancel. Se commento uno o l'altro in modo che l'altro non esista, essi risolvono entrambi in UpdateMarkupC53 nel nome dell'istanza del contatore, . Quando I li commenta entrambi, nessuna delle istanze di contatore viene visualizzata per ServiceModelEndpoint o ServiceModelOperation.

Puoi suggerire una soluzione per questo, Microsoft? Dispongo già di un servizio di produzione che desidero monitorare e modificare i nomi delle operazioni non sono un'opzione.

E Microsoft ha risposto con:

Lei ha ragione. E questo comportamento è di progettazione. C'è un limite su la lunghezza del nome di un'istanza del contatore delle prestazioni.

I contatori delle prestazioni dell'operazione si trovano nell'oggetto prestazioni ServiceModelOperation 4.0.0.0 durante la visualizzazione con Performance Monitor (Perfmon.exe). Ogni operazione ha una singola istanza . Cioè, se un dato contratto ha 10 operazioni, 10 operazioni di istanze contatore sono associate a quel contratto. Le istanze oggetto vengono denominati utilizzando il seguente schema:..

(ServiceName) (ContractName) (OperationName) @ (primo punto finale ascoltatore indirizzo)

Quando un nome Windows Communication Foundation (WCF) istanza contatore supera la lunghezza massima, WCF sostituisce una parte del nome dell'istanza con un valore hash.

Così sembra a causa di questa limitazione massima nome, i grandi probabilità di una collisione hash quando c'è solo un suffisso hash a due cifre, e che quando due istanze di un contatore hanno lo stesso nome, si spazza via la contatore intero che non è effettivamente possibile.

Che è più che un po 'frustrante. Quindi, a meno che Microsoft non risolva questo problema (lunghi valori hash o una migliore gestione delle collisioni da parte dei contatori perf) o fornisca una soluzione adeguata, stiamo lavorando alla cieca.

+0

Felice di trovare questo commento. Questo è esattamente il motivo per cui non ho visto alcuna operazione in ServiceModelOperation 4.0.0.0 in PerfMon. Grazie mille, Microsoft. Che disegno incredibilmente stupido. – MiloDC

Problemi correlati