2015-01-12 16 views
6

Sto cercando di creare dei contatori delle prestazioni personalizzati all'interno di un ruolo di lavoratore azzurro e di un ruolo web. Il ruolo Web raccoglie e trasferisce correttamente i dati del contatore delle prestazioni dalla VM blu all'archivio della tabella diagnostica, tuttavia il ruolo dell'operatore non riesce. Accedendo al VM e di controllo dei log degli eventi che sto vedendo le seguenti eccezioni:Contatori delle prestazioni personalizzate dei ruoli dei lavoratori di Azure

Source: perflib 
Event ID: 1010 
The Collect Procedure for the "D:\Windows\System32\winspool.drv" service in DLL "Spooler" generated an exception or returned an invalid status. The performance data returned by the counter DLL will not be returned in the Perf Data Block. The first four bytes (DWORD) of the Data section contains the exception code or status code. 


Source: perflib 
Event ID: 1008 
The Open Procedure for service "BITS" in DLL "D:\Windows\System32\bitsperf.dll" failed. Performance data for this service will not be available. The first four bytes (DWORD) of the Data section contains the error code. 


Source: perflib 
Event ID: 1023 
Windows cannot load the extensible counter DLL ASP.NET_2.0.50727. The first four bytes (DWORD) of the Data section contains the Windows error code. 

Il diagnostics.wadcfg si presenta come segue:

<PerformanceCounters bufferQuotaInMB="2048" scheduledTransferPeriod="PT5M"> 
    <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT30S" /> 
    <PerformanceCounterConfiguration counterSpecifier="\Memory\Available MBytes" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\Memory\Page Faults/sec" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\Process(WAWorkerHost)\Private Bytes" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Memory(WAWorkerHost)\# Bytes in all Heaps" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Memory(WAWorkerHost)\% Time in GC" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\Process(WAWorkerHost)\Thread Count" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR LocksAndThreads(WAWorkerHost)\# of current logical Threads" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR LocksAndThreads(WAWorkerHost)\# of current physical Threads" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR LocksAndThreads(WAWorkerHost)\# of current recognized threads" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR LocksAndThreads(WAWorkerHost)\Current Queue Length" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\Network Interface(*)\Bytes Received/sec" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\Network Interface(*)\Bytes Sent/sec" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Exceptions(WAWorkerHost)\# of Exceps Thrown/sec" sampleRate="PT30S" /> 

    <!--If I comment out the following two out of the box counters, it works in the azure emulator--> 
    <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Avg. Disk Write Queue Length" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Avg. Disk Read Queue Length" sampleRate="PT1M" />--> 

    <PerformanceCounterConfiguration counterSpecifier="\Product\Add Product Forward Recommendation Overall Duration_AverageTimer32" sampleRate="PT1M" /> 
    <PerformanceCounterConfiguration counterSpecifier="\Product\Add Recommendations Product Handler Duration_AverageTimer32" sampleRate="PT1M" /> 
</PerformanceCounters> 

Il fuori contatori delle prestazioni scatola stanno trasferendo, solo il costume quelli che causano problemi.

I contatori delle prestazioni vengono creati durante l''avvio' e, come notato sopra, localmente se commento i due contatori di PhysicalDisk vedo i miei contatori personalizzati che funzionano (semplicemente non in azzurro).

Qualsiasi aiuto è molto apprezzato.

Grazie Dan

+1

Hai mai risolto questo? Ho questo problema esatto. Ad un certo punto i miei contatori delle prestazioni si stavano trasferendo; ma ora non lo sono e la configurazione non è cambiata. –

risposta

2

Quindi il problema è stato stavo correndo il codice per impostare i contatori delle prestazioni durante l' 'avvio' tuttavia quello che non ho del tutto capito è che questo codice è isolato dal ruolo effettivo web/lavoratore che è in esecuzione dopo l'avvio. Pertanto, quando viene avviato il ruolo web/worker, ad esempio in global.asax, sarà necessario inizializzare nuovamente i contatori delle prestazioni qui.

+1

global.asax è per la parte di codice eseguita in IIS. Come succederebbe in un ruolo di lavoratore? – sharptooth

+0

Stavo dicendo ad esempio global.asax nello scenario di un ruolo web. – Danjuro