Condividi tramite


Colli di bottiglia a livello di sistema

Questo argomento descrive come risolvere i colli di bottiglia comuni a livello di sistema che possono influire sulle prestazioni di una soluzione BizTalk Server.

Creazione di uno snapshot della configurazione di base

La raccolta delle informazioni seguenti consente di fornire uno snapshot della configurazione di base che è possibile usare per correggere i colli di bottiglia a livello di sistema.

Raccogliere la documentazione

Esaminare la documentazione dell'architettura e dell'infrastruttura dello scenario.

Eseguire Baseline Security Analyzer

Per eseguire Baseline Security Analyzer, seguire questa procedura:

  1. Usare Microsoft Baseline Security Analyzer.

  2. Usando un account amministratore di dominio, accedere a un computer nella stessa rete che ospita i computer BizTalk Server e SQL Server.

  3. Installare Microsoft Baseline Security Analyzer nel computer corrente, ad esempio uno dei computer BizTalk Server o un computer separato.

  4. Eseguire un'analisi separata (Avvia analisi), specificando come parametro il nome o l'indirizzo IP di ogni BizTalk Server e SQL Server computer.

  5. Copiare ogni report di sicurezza (file mbsa) dalla directory %userprofile%\SecurityScans.

Eseguire BizTalk Server Best Practices Analyzer

Seguire questa procedura per eseguire BizTalk Server Best Practices Analyzer:

  1. Scaricare il BizTalk Server Best Practices Analyzer.

  2. Usando un account utente che fa parte del gruppo di sicurezza BizTalk Server Administrator, accedere a un nodo BizTalk Server.

  3. Installare il BizTalk Server Best Practices Analyzer nel computer corrente.

  4. Eseguire lo strumento e salvare il report.

Eseguire MSInfo32 e salvare i risultati

Per eseguire MSInfo32, seguire questa procedura:

  1. Usando un dominio o un account amministratore locale, accedere a ogni BizTalk Server e SQL Server computer.

  2. Avviare un prompt dei comandi e passare alla directory %windir%\system32 del computer.

  3. Eseguire MSinfo32.exe dal prompt dei comandi.

  4. Fare clic sul menu File e selezionare la voce di menu Esporta da esportare per salvare la configurazione del computer.

Esportare l'impostazione del Registro di sistema TCP/IP BizTalk Server e SQL Server computer

Seguire questa procedura per salvare le impostazioni del Registro di sistema TCP/IP BizTalk Server e SQL Server:

  1. Avviare un prompt dei comandi e passare alla directory %windir%\system32 del computer.

  2. Eseguire Regedit.exe dal prompt dei comandi.

  3. Passare alla chiave seguente nel Registro di sistema:

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] (network settings)
    
  4. Fare clic con il pulsante destro del mouse su questa chiave e scegliere Esporta per esportare la chiave del Registro di sistema in un file.

Raccogliere i file di configurazione bizTalk

In ogni nodo BizTalk Server raccogliere il file di configurazione BizTalk Server, BTSNTSvc.exe.config file (o BTSNTSvc64.exe.config per gli host a 64 bit), che si trova nella cartella di installazione BizTalk Server ,ad esempio C:\Programmi\Microsoft BizTalk Server 2010.

Raccogliere i file di configurazione .NET

In ogni nodo BizTalk Server raccogliere i file di configurazione di machine.config e web.config .NET Framework 4.0. I file di configurazione sono disponibili nel percorso seguente:

  • Per 32 bit: cartella %windir%\Microsoft.NET\Framework\v4.0.30319\CONFIG

  • Per 64 bit: cartella %windir%\Microsoft.NET\Framework64\v4.0.30319\CONFIG

Usare lo strumento BizTalk MsgBoxViewer per raccogliere informazioni sul database MessageBox

Seguire questa procedura per raccogliere informazioni sul database MessageBox usando lo strumento BizTalk MsgBoxViewer:

  1. Scaricare lo strumento BizTalk MsgBoxViewer, disponibile nella BizTalk Health Monitor.

  2. Accedere al computer BizTalk Server con un account utente che fa parte del gruppo di sicurezza BizTalk Server Administrator.

  3. Copiare il MsgBoxViewer.exe nel computer BizTalk Server.

  4. Avviare lo strumento.

  5. Fare clic sulla scheda Informazioni facoltative da raccogliere e quindi su Seleziona tutte le informazioni.

  6. Fare clic su Avvia per raccogliere.

  7. Quando l'etichetta Stato visualizza il messaggio Fine raccolta , passare alla cartella contenente il file eseguibile MsgBoxViewer.exe e copiare il report risultante (.htm) e i file di log.

Raccogliere e archiviare il codice sorgente per tutti i componenti usati nella soluzione

Archiviare il codice sorgente per tutti i componenti (ad esempio orchestrazione, componente pipeline personalizzato e codice helper) in una condivisione file separata.

Procedure iniziali per la risoluzione dei problemi

Esistono alcuni componenti di una soluzione di BizTalk Server che, se non è abilitata, causeranno problemi di prestazioni indipendentemente dalle dimensioni complessive o dalla progettazione della soluzione BizTalk. È necessario completare le seguenti attività preliminari per la risoluzione dei problemi per escludere alcuni dei "soliti sospetti" prima di intraprendere un'analisi completa dei colli di bottiglia di una soluzione BizTalk.

  • Verificare che l'istanza dell'host di rilevamento sia in esecuzione : L'istanza host Tracking è responsabile dello spostamento dei dati BAM e HAT dalla tabella TrackingData del database MessageBox alle tabelle di database BizTalkDTADb e/o BAMPrimaryImport. Se l'istanza dell'host di rilevamento non è in esecuzione, i dati di rilevamento si accumulano nel database MessageBox e influisce negativamente sulle prestazioni della soluzione BizTalk Server.

  • Verificare che il servizio Enterprise Single Sign-On (ENTSSO) sia in esecuzione in tutti i computer BizTalk Server: le istanze host BizTalk mantengono una dipendenza da un'istanza in esecuzione locale del servizio ENTSSO. Se il servizio ENTSSO non è in esecuzione nella BizTalk Server, le istanze host nel server non saranno in grado di eseguire neanche.

  • Verificare che il servizio SQL Server Agent sia in esecuzione in tutti i computer SQL Server: il servizio SQL Server Agent deve essere in esecuzione per consentire l'esecuzione dei processi di SQL Server Agent BizTalk. Questi processi eseguono funzioni importanti per mantenere operativi e integri i server.

  • Verificare che i processi di SQL Server Agent BizTalk siano abilitati e in esecuzione senza eccezioni. Anche se il servizio SQL Server Agent è in esecuzione, è fondamentale che tutti i processi predefiniti di BizTalk SQL Server Agent siano abilitati e eseguiti correttamente.

  • Controllare i registri eventi BizTalk Server e SQL Server: un esame cursore dei registri eventi BizTalk Server o SQL Server potrebbe rivelare un problema che potrebbe altrimenti richiedere una quantità significativa di tempo per diagnosticare e risolvere.

  • Eseguire BizTalk Server Best Practices Analyzer: BizTalk Server Best Practices Analyzer esamina una distribuzione di BizTalk Server e genera un elenco di problemi relativi agli standard delle procedure consigliate. Lo strumento esegue la verifica a livello di configurazione raccogliendo dati da origini informazioni diverse, ad esempio classi WMI (Windows Management Instrumentation), database SQL Server e voci del Registro di sistema. I dati vengono quindi usati per valutare la configurazione della distribuzione. Lo strumento legge e segnala solo e non modifica le impostazioni di sistema e non è uno strumento di ottimizzazione automatica. Scaricare il BizTalk Server Best Practices Analyzer.

Colli di bottiglia del sistema di alto livello

Questa sezione descrive i colli di bottiglia a livello di sistema che possono essere presenti in una soluzione BizTalk Server e possibili strategie di mitigazione.

Colli di bottiglia di I/O del disco

L'I/O su disco si riferisce al numero di operazioni di lettura e scrittura eseguite dall'applicazione in un disco fisico o in più dischi installati nel server. Le attività comuni che possono causare l'I/O del disco e i colli di bottiglia correlati includono operazioni di I/O di file a esecuzione prolungata, crittografia dei dati e decrittografia dei dati, lettura di dati non necessari dalle tabelle di database e memoria fisica insufficiente, che può causare un'eccessiva attività di paging. La velocità del disco è un altro fattore da considerare quando si valutano colli di bottiglia di I/O del disco; i dischi più veloci offrono prestazioni migliori e consentono di ridurre i colli di bottiglia di I/O del disco.

La tabella seguente fornisce i fattori che devono essere presi in considerazione durante la pianificazione del sottosistema del disco per una soluzione BizTalk Server.

Fattore del sottosistema del disco Dettagli
Cache della memoria su disco e memoria fisica disponibile Poiché la memoria viene memorizzata nella cache su disco perché la memoria fisica diventa limitata, assicurarsi di disporre di una quantità sufficiente di memoria disponibile. Quando la memoria è scarsa, vengono scritte più pagine su disco, con conseguente aumento dell'attività del disco. Assicurarsi inoltre di impostare il file di paging su una dimensione appropriata. Una cache aggiuntiva per la memoria su disco consente di compensare i picchi nelle richieste di I/O su disco. Tuttavia, si noti che una cache di memoria su disco di grandi dimensioni risolve raramente il problema di non avere spindle sufficienti e la presenza di spindle sufficienti può negare la necessità di una cache di memoria su disco di grandi dimensioni. Per informazioni sulla configurazione del file di paging di Windows per prestazioni ottimali, vedere la sezione "Configure the Windows PAGEFILE for optimal performance" nell'argomento Ottimizzazione delle prestazioni del sistema operativo.
Tipo di controller di archiviazione Se si dispone di una cache supportata dalla batteria, abilitare la memorizzazione nella cache di scrittura del disco per migliorare le prestazioni di scrittura del disco nei volumi dei file di log delle transazioni e nei volumi di database. La memorizzazione nella cache di scrittura fornisce un tempo di risposta di 2 ms per una richiesta di I/O di scrittura, anziché un tempo di risposta da 10 a 20 ms senza la memorizzazione nella cache di scrittura abilitata. L'abilitazione della memorizzazione nella cache di scrittura migliora notevolmente la velocità di risposta per le richieste di scrittura client. La memorizzazione nella cache in lettura non migliora le prestazioni in uno scenario di BizTalk Server perché è utile solo per le letture sequenziali dei dischi, che si verificano solo nei file di log delle transazioni.

I file di log delle transazioni vengono letti solo quando vengono riprodotti, ad esempio dopo un ripristino del database o quando un server non viene arrestato correttamente. Le cache di dimensioni maggiori consentono di memorizzare nel buffer più dati, vale a dire che possono essere inseriti periodi di saturazione più lunghi. Se il controller consente di configurare le dimensioni della pagina della cache, è necessario impostarlo su 4 KB. Una dimensione maggiore, ad esempio 8 KB, comporta uno spreco di cache perché una richiesta di I/O di 4 KB occupa l'intera pagina della cache di 8 KB, riducendo così la cache utilizzabile in metà.
Mandrini Le spindle sono più importanti della capacità e le prestazioni BizTalk Server vengono migliorate se le spindle supportano un numero elevato di richieste di I/O casuali. Pianificare l'utilizzo totale non superiore all'80% per garantire la disponibilità di operazioni di I/O sufficienti, anche in caso di errore di rotazione.
Raid La soluzione RAID usata deve essere basata sui compromessi sui costi e sulle prestazioni appropriati per l'ambiente in uso. Pertanto, è possibile consigliare più di un tipo di soluzione RAID per un determinato requisito di archiviazione dei dati. Le raccomandazioni generali sono le seguenti:

- Usare Raid-1+0 (set con striping in un set con mirroring) per i database BizTalk Server.
- Usare Raid-1 (set con mirroring senza parità) per i volumi dei file di log delle transazioni.
- In generale, Raid 5 (set con ridistribuzione con parità distribuita) non è consigliabile perché Raid 5 non offre affidabilità, disponibilità e prestazioni ottimali rispetto ad altre configurazioni Raid.
- A causa della possibilità di perdita di dati permanenti, non è mai necessario usare una configurazione raid-0 (set con striping senza parità) in un ambiente di produzione BizTalk Server.
Tipo di bus Una velocità effettiva più elevata offre prestazioni migliori. In generale, gli autobus SCSI offrono velocità effettiva e scalabilità migliori rispetto agli autobus IDE o ATA. È possibile usare l'equazione seguente per determinare il limite di velocità effettiva teorica per il tipo di bus:

(Velocità del bus (in bit) / 8 bit per byte) X Velocità operativa (in MHz) = Velocità effettiva (in MB/s)

È anche possibile migliorare le prestazioni di I/O del disco inserendo più unità su bus di I/O separati.

Contatori delle prestazioni per misurare i colli di bottiglia di I/O del disco

Nota

Quando si tenta di analizzare i colli di bottiglia delle prestazioni del disco, è consigliabile usare sempre i contatori dei dischi fisici. Tuttavia, se si usa RAID software, è consigliabile usare i contatori dei dischi logici. Come per i contatori del disco logico e del disco fisico, gli stessi contatori sono disponibili in ognuno di questi oggetti contatori. I dati del disco logico vengono rilevati da Gestione volumi (o gestioni) e i dati del disco fisico vengono rilevati dalla gestione partizioni.

I contatori delle prestazioni seguenti devono essere usati per determinare se il sistema riscontra un collo di bottiglia correlato all'I/O del disco:

  • Disco fisico\Lunghezza media coda su disco

    • Soglia: non deve essere superiore al numero di spindles più due.

    • Significato: questo contatore indica il numero medio di richieste di lettura e scrittura accodate per il disco selezionato durante l'intervallo di esempio. Questo contatore è utile per raccogliere dati di concorrenza, inclusi i picchi di dati e i carichi di picco. Questi valori rappresentano il numero di richieste in anteprima sotto il driver che accetta le statistiche. Ciò significa che le richieste non sono necessariamente accodate, ma potrebbero essere effettivamente in servizio o completate e sul modo in cui eseguire il backup del percorso. Le posizioni in volo possibili includono quanto segue:

      • Coda SCSIport o Storport

      • Coda driver OEM

      • Coda del controller di disco

      • Coda disco rigido

      • Ricezione attiva da un disco rigido

  • PhysicalDisk\Avg. Lunghezza coda lettura disco

    • Soglia: deve essere minore di due.

    • Significato: questo contatore indica il numero medio di richieste di lettura accodate per il disco selezionato durante l'intervallo di esempio.

  • PhysicalDisk\Avg. Lunghezza coda scrittura disco

    • Soglia: deve essere minore di due.

    • Significato: questo contatore indica il numero medio di richieste di scrittura accodate per il disco selezionato durante l'intervallo di esempio.

  • PhysicalDisk\Avg. Disco sec/Lettura

    • Soglia: nessun valore specifico.

      • Meno di 10 millisecondi (ms) = buono

      • Tra 15 e 25 ms = fair

      • Maggiore di 25 ms = povero

    • Significato: questo contatore indica il tempo medio, in secondi, di un'operazione di lettura dei dati dal disco. Se il numero è maggiore di 25 millisecondi (ms), significa che il sistema del disco riscontra la latenza durante la lettura dal disco. Per i server cruciali che ospitano BizTalk Server, la soglia accettabile è molto inferiore, circa 10 ms.

  • PhysicalDisk\Avg. Disco sec/Write

    • Soglia: nessun valore specifico.

      • Meno di 10 millisecondi (ms) = buono

      • Tra 15 e 25 ms = fair

      • Maggiore di 25 ms = povero

    • Significato: questo contatore indica il tempo medio, in secondi, di un'operazione di scrittura dei dati sul disco. Se il numero è maggiore di 25 ms, il sistema del disco sperimenta la latenza durante la scrittura nel disco. Per i server cruciali che ospitano BizTalk Server, la soglia accettabile è molto inferiore, circa 10 ms.

  • PhysicalDisk\Avg. Disco sec/Transfer

    • Soglia: non deve essere superiore a 18 millisecondi.

    • Significato: questo contatore indica il tempo, in secondi, del trasferimento medio del disco. Ciò può indicare una grande quantità di frammentazione del disco, dischi lenti o errori del disco. Moltiplicare i valori dei contatori Physical Disk\Avg. Disk sec/Transfer e Memory\Pages/sec . Se il prodotto di questi contatori supera lo 0,1, il paging richiede più del 10% del tempo di accesso al disco, quindi è necessaria più memoria fisica disponibile.

  • PhysicalDisk\Disk Scritture/sec

    • Soglia: dipende dalle specifiche del produttore.

    • Significato: questo contatore indica la frequenza di operazioni di scrittura sul disco.

  • Processore\% Tempo DPC, % Tempo di interruzione e % Tempo con privilegi - Se l'ora di interruzione e la chiamata di procedura posticipata (DPC) sono una parte elevata del tempo con privilegi, il kernel spende una quantità significativa di tempo per l'elaborazione delle richieste di I/O. In alcuni casi le prestazioni possono essere migliorate configurando interruzioni e affinità DPC a un numero ridotto di CPU in un sistema multiprocessore, che migliora la localizzazione della cache. In altri casi, è consigliabile distribuire gli interruzioni e i DPC tra molte CPU, in modo da mantenere l'interruzione e l'attività DPC da diventare un collo di bottiglia. Per informazioni sull'uso dello strumento Di configurazione filtro di interruzione per associare gli interruzioni della scheda di rete a processori specifici nei computer multiprocessore, vedere la sezione "Usare lo strumento Di configurazione del filtro di interruzione per associare gli interruzioni della scheda di rete a processori specifici nei computer multiprocessore" in Ottimizzazione delle prestazioni del sistema operativo.

  • Processor\DPCs accodato/sec - Misura il consumo di tempo della CPU e delle risorse del kernel.

  • Processor\Interrupts/sec - Un'altra misura della modalità di interruzione richiede tempo di CPU e risorse del kernel. I controller di disco moderni spesso combinano o coalesce interrompono in modo che un singolo interruzione restituisca l'elaborazione di più completamento di I/O. Naturalmente, c'è un compromesso tra interruzioni ritardata (e quindi completamento) e l'economia del tempo di elaborazione della CPU.

Opzioni di ottimizzazione di I/O del disco

Se si determina che l'I/O del disco è un collo di bottiglia nell'ambiente, le tecniche seguenti possono essere usate per alleviare il collo di bottiglia:

  • Deframmentare i dischi - Usare l'utilità PageDefrag disponibile per deframmentare il file di paging di Windows e pre-allocare le tabelle file master.

  • Usare set di strip per elaborare le richieste di I/O simultaneamente su più dischi - Usare volumi con mirroring per fornire la tolleranza di errore e aumentare le prestazioni di I/O. Se non è necessaria la tolleranza di errore, implementare set di righe per la lettura e la scrittura rapida e la capacità di archiviazione migliorata. Quando vengono usati set di striping, l'utilizzo di ogni disco viene ridotto perché il lavoro viene distribuito tra i volumi e aumenta la velocità effettiva complessiva. Se si aggiungono dischi aggiuntivi in un set di strip non aumenta la velocità effettiva, il sistema potrebbe riscontrare un collo di bottiglia dovuto alla contesa tra dischi dal controller del disco. In questo caso, l'aggiunta di un controller di disco aggiuntivo consente di distribuire il carico e aumentare le prestazioni.

  • Distribuire il carico di lavoro tra più unità - Il clustering e il file system distribuito di Windows offrono soluzioni per il bilanciamento del carico in più unità disco.

  • Limitare l'uso della compressione o della crittografia dei file - La compressione dei file e la crittografia sono operazioni di I/O a elevato utilizzo. È consigliabile usarli solo dove assolutamente necessario.

  • Disabilitare la creazione di nomi brevi - Se non si supporta MS-DOS per i client Windows 3.x, disabilitare i nomi brevi per migliorare le prestazioni. Per altre informazioni sulla disabilitazione della creazione di nomi brevi, vedere la sezione "Disabilita la generazione di nomi brevi (8.3) in Ottimizzazione delle prestazioni del sistema operativo.

  • Disabilitare l'ultimo aggiornamento di accesso - Per impostazione predefinita, NTFS aggiorna il data e l'ora dell'ultimo accesso nelle directory ogni volta che attraversa la directory. Per un volume NTFS di grandi dimensioni, questo processo di aggiornamento può impedire le prestazioni. Per altre informazioni sulla disabilitazione degli ultimi aggiornamenti di accesso, vedere la sezione "Disabilitare gli aggiornamenti dell'ultimo accesso NTFS" in Ottimizzazione delle prestazioni del sistema operativo.

    Attenzione

    Alcune applicazioni, ad esempio utilità di backup incrementali, si basano sulle informazioni sull'aggiornamento NTFS e non funzioneranno correttamente senza di esso.

  • Riservare spazio appropriato per la tabella file master - Aggiungere la voce NtfsMftZoneReservation al Registro di sistema a seconda del numero di file in genere archiviati nei volumi NTFS. Quando si aggiunge questa voce al Registro di sistema, il sistema riserva spazio nel volume per la tabella file master. Riservare spazio in questo modo consente alla tabella file master di crescere in modo ottimale. Se i volumi NTFS in genere archiviano relativamente pochi file, impostare il valore di questa voce del Registro di sistema sul valore predefinito 1. In genere è possibile usare un valore pari a 2 o 3 se i volumi NTFS archiviano un numero moderato di file e usano un valore pari a 4 (massimo) se i volumi NTFS tendono a contenere un numero relativamente elevato di file. Assicurarsi tuttavia di testare qualsiasi impostazione maggiore di 2, perché questi valori maggiori consentono al sistema di riservare una parte molto più grande del disco per la tabella file master. Per altre informazioni sull'aggiunta di NtfsMftZoneReservation al Registro di sistema, vedere la sezione "Aumentare lo spazio disponibile per la tabella file master" in Ottimizzazione delle prestazioni del sistema operativo.

  • Usare i sistemi su disco più efficienti disponibili - Oltre al disco fisico usato, prendere in considerazione il tipo di controller del disco e il cabling che verrà usato. Un sottosistema del disco efficiente deve inoltre fornire driver che supportano la moderazione dell'interruzione o l'interruzione dell'interruzione del processore per attenuare l'attività di interruzione del processore causata dall'I/O del disco.

  • Assicurarsi di usare la configurazione RAID appropriata - Usare RAID 10 (striping e mirroring) per prestazioni e tolleranza di errore ottimali. Il compromesso è che l'uso di RAID 10 è costoso. Evitare di usare RAID 5 quando si dispone di operazioni di scrittura estese. Per altre informazioni sull'implementazione di RAID in un ambiente BizTalk Server, vedere la sezione "Infrastruttura disco" nell'ottimizzazione del database BizTalk Server.

  • Prendere in considerazione l'uso di partizioni di database - Se si dispone di un collo di bottiglia del database, è consigliabile usare partizioni di database e mapping di dischi a tabelle e log delle transazioni specifici. Lo scopo principale delle partizioni consiste nel superare i colli di bottiglia del disco per tabelle di grandi dimensioni. Se si dispone di una tabella con un numero elevato di righe e si determina che è l'origine di un collo di bottiglia, prendere in considerazione l'uso di partizioni. Per SQL Server, è possibile usare i gruppi di file per migliorare le prestazioni di I/O. È possibile associare tabelle ai gruppi di file e quindi associare i gruppi di file a un disco rigido specifico. Per altre informazioni sull'uso dell'ottimizzazione dei filegroup per i database BizTalk Server, vedere Ottimizzazione dei filegroup per i database.

  • Prendere in considerazione l'aggiunta di memoria fisica, se si hanno errori di pagina eccessivi - Un valore elevato per il contatore delle prestazioni Memory: Pages/sec potrebbe indicare un paging eccessivo che aumenterà l'I/0 del disco. In questo caso, è consigliabile aggiungere memoria fisica per ridurre l'I/O del disco e aumentare le prestazioni.

  • Prendere in considerazione l'uso di un disco con una classificazione RPM superiore o l'uso di un dispositivo SAN (Storage Area Network) - I dischi con valutazioni RPM più elevate offrono prestazioni migliorate rispetto ai dischi con valutazioni RPM inferiori. I dispositivi SAN offrono in genere prestazioni di livello superiore, ma a un prezzo premium.

  • Seguire i consigli in Ottimizzazione delle prestazioni del database. In questo argomento sono disponibili diversi consigli per ottimizzare le prestazioni del database prima e dopo la configurazione di BizTalk Server.

Colli di bottiglia della CPU

Ogni applicazione eseguita in un server ottiene una sezione temporale della CPU. La CPU potrebbe essere in grado di gestire in modo efficiente tutti i processi in esecuzione nel computer o potrebbe essere overload. Esaminando l'attività del processore e l'attività dei singoli processi, tra cui creazione di thread, cambio di thread e cambio di contesto, è possibile ottenere informazioni dettagliate sul carico di lavoro e sulle prestazioni del processore.

Potresti avere un collo di bottiglia della CPU se...

  • Il valore del contatore delle prestazioni processore \% del processore supera spesso il 75%.

  • Il valore del contatore delle prestazioni della coda del processore system\ è 2 o più per un periodo di tempo sostenuto.

  • Il valore dei contatori delle prestazioni Processor\% Privileged Time o System\Context Switch/sec è insolitamente elevato.

    Se il valore del contatore delle prestazioni processore \ % è elevato, l'accodamento si verifica e nella maggior parte degli scenari il valore della lunghezza della coda del processore è elevato.

Contatori delle prestazioni per misurare i colli di bottiglia della CPU

I contatori delle prestazioni seguenti devono essere usati per determinare se il sistema riscontra un collo di bottiglia correlato alla CPU:

  • Processore\% Tempo processore

    • Soglia: deve essere inferiore al 85%.

    • Significato: questo contatore è l'indicatore principale dell'attività del processore. Valori elevati molti non necessariamente sono cattivi. Tuttavia, se gli altri contatori correlati al processore aumentano in modo lineare, ad esempio Processor \% Privileged Time o System\Processor Queue Length, l'utilizzo elevato della CPU può essere utile analizzare.

  • Processore\% Tempo privilegiato

    • Soglia: una figura che è costantemente superiore al 75% indica un collo di bottiglia.

    • Significato: questo contatore indica la percentuale di tempo in cui viene eseguito un thread in modalità con privilegi. Quando l'applicazione chiama funzioni del sistema operativo (ad esempio per eseguire operazioni di I/O di rete o di I/O di rete), queste funzioni del sistema operativo vengono eseguite in modalità con privilegi.

  • Processore\% tempo di Interrupt

    • Soglia: dipende dal processore.

    • Significato: questo contatore indica la percentuale di tempo trascorso dal processore durante la ricezione e l'interruzione dell'hardware di manutenzione. Questo valore è un indicatore indiretto dell'attività dei dispositivi che generano interruzioni, ad esempio schede di rete. Un aumento drammatico di questo contatore indica potenziali problemi hardware.

  • Sistema\Lunghezza coda processore

    • Soglia: un valore medio coerentemente superiore a 2 indica un collo di bottiglia.

    • Significato: se sono presenti più attività pronte per l'esecuzione rispetto ai processori, i thread si accodano. La coda del processore è la raccolta di thread pronti ma non in grado di essere eseguiti dal processore perché un altro thread è attualmente in esecuzione. Una coda sostenuta o ricorrente di più di due thread è un'indicazione chiara di un collo di bottiglia del processore. È possibile ottenere una maggiore velocità effettiva riducendo il parallelismo in questi casi.

      È possibile usare questo contatore insieme al contatore processore\% del processore per determinare se l'applicazione può trarre vantaggio da più CPU. Esiste una singola coda per il tempo del processore, anche nei computer multiprocessore. Pertanto, in un computer multiprocessore dividere il valore PQL (Processor Queue Length) in base al numero di processori che manutenzione del carico di lavoro.

      Se la CPU è molto occupato (90% o maggiore utilizzo) e la media PQL è costantemente superiore a 2 per processore, potrebbe essere presente un collo di bottiglia del processore che potrebbe trarre vantaggio dall'aggiunta di CPU. In alternativa, è possibile ridurre il numero di thread e code più a livello di applicazione. Questo causerà un cambio di contesto minore e meno il cambio di contesto è utile per ridurre il carico della CPU. Un motivo comune per un valore PQL pari a 2 o superiore con un utilizzo basso della CPU è che le richieste per il tempo del processore arrivano casualmente e i thread richiedono quantità irregolari di tempo dal processore. Ciò significa che il processore non è un collo di bottiglia, ma che la logica di threading dell'applicazione deve essere migliorata.

  • Commutatori di sistema\contesto/sec

    • Soglia: come regola generale, un cambio di contesto minore di 5.000 al secondo al secondo per processore non vale la pena preoccuparsi. Se il cambio di contesto supera i 15.000 al secondo per processore, il cambio di contesto può diventare un collo di bottiglia.

    • Significato: il passaggio al contesto si verifica quando un thread con priorità superiore impedisce un thread con priorità inferiore attualmente in esecuzione o quando un thread con priorità elevata blocca altri thread. I livelli elevati di cambio di contesto possono verificarsi quando molti thread condividono lo stesso livello di priorità. Questo spesso indica che ci sono troppi thread concorrenti per i processori nel sistema. Se sia l'utilizzo del processore che i livelli di cambio del contesto sono bassi, spesso si tratta di un'indicazione che i thread vengono bloccati.

Risoluzione dei colli di bottiglia della CPU

Il primo passaggio consiste nell'identificare il processo che richiede tempo eccessivo per il processore. Usare Gestione attività di Windows per identificare il processo che usa livelli elevati di CPU esaminando la colonna CPU nella pagina Processi . È anche possibile determinare questa operazione monitorando Il tempo processo\%processore in Monitor prestazioni e selezionando i processi da monitorare.

Un altro potente strumento per determinare quali processi richiedono un tempo di CPU eccessivo è il Profiler di Visual Studio Team System Profiler disponibile con la suite VSTS (Visual Studio Team System). Per altre informazioni sull'uso di Visual Studio Team System Profiler, vedere la documentazione di Visual Studio Team System.

Dopo aver determinato che la CPU è un collo di bottiglia, sono disponibili diverse opzioni, tra cui quanto segue:

  • Aggiungere più processori se si dispone di applicazioni multi thread. Valutare la possibilità di eseguire l'aggiornamento a un processore più potente se l'applicazione è a thread singolo.

  • Se si osserva una frequenza elevata di cambio di contesto, è consigliabile ridurre il numero di thread per il processo prima di aumentare il numero di processori.

  • Analizzare e ottimizzare l'applicazione che causa un utilizzo elevato della CPU. È possibile eseguire il dump del processo in esecuzione usando l'utilità ADPLUS e analizzare la causa usando Windbg. Queste utilità fanno parte del toolkit di debug di Windows. È possibile scaricare questi strumenti da Strumenti di debug per Windows.

  • Analizzare il log di strumentazione generato dall'applicazione per isolare il sottosistema che richiede il tempo massimo per l'esecuzione. Determinare se una revisione del codice sarebbe più utile dell'ottimizzazione dell'ambiente di BizTalk Server.

Nota

Anche se è possibile modificare il livello di priorità del processo di un'applicazione usando Gestione attività o da un prompt dei comandi, è consigliabile evitare in genere di eseguire questa operazione.

Colli di bottiglia della memoria

Quando si valutano colli di bottiglia correlati alla memoria, prendere in considerazione allocazioni non necessarie, pulizia inefficiente e meccanismi di memorizzazione nella cache e gestione dello stato inappropriati. Per risolvere i colli di bottiglia correlati alla memoria, ottimizzare il codice per eliminare questi problemi e quindi ottimizzare la quantità di memoria allocata alle applicazioni. Se si determina durante l'ottimizzazione che si verificano conflitti di memoria e paging eccessivo, potrebbe essere necessario aggiungere memoria fisica aggiuntiva al server. La memoria ridotta comporta un aumento del paging dello spazio indirizzi virtuale di un'applicazione da e verso il disco. Se il paging diventa eccessivo, l'I/O del disco aumenterà e influisce negativamente sulle prestazioni complessive del sistema.

Potresti avere un collo di bottiglia di memoria se...

  • Il valore del contatore delle prestazioni Memory\Available MBytes è basso, a causa di limitazioni di memoria di sistema o di un'applicazione che non rilascia memoria. Monitorare il valore del contatore delle prestazioni Process\Working Set per ogni processo in esecuzione. Se il valore del set di elaborazione \lavoro rimane elevato anche quando il processo non è attivo, potrebbe essere un'indicazione che il processo non rilascia memoria come deve.

  • Il valore del contatore delle prestazioni Memory\Pages/sec è elevato. La media di input di memoria\pagine/sec suddivisa in base alla media delle letture di memoria\pagina/sec fornisce il numero di pagine per disco letto. Questo valore non deve in genere superare cinque pagine al secondo. Un valore maggiore di cinque pagine al secondo indica che il sistema spende troppo tempo per il paging e richiede più memoria (presupponendo che l'applicazione sia stata ottimizzata).

Contatori delle prestazioni per misurare i colli di bottiglia della memoria

I contatori delle prestazioni seguenti devono essere usati per determinare se il sistema riscontra un collo di bottiglia correlato alla memoria:

  • Memoria\Mbyte disponibili

    • Soglia: un valore coerente di meno del 20 al 25% della RAM installata è un'indicazione della memoria insufficiente.

    • Significato: indica la quantità di memoria fisica disponibile per i processi in esecuzione nel computer. Si noti che questo contatore visualizza solo l'ultimo valore osservato. Non è una media.

  • Memoria\Lettura pagina/sec

    • Soglia: valori supportati di più di cinque indicano un numero elevato di errori di pagina per le richieste di lettura.

    • Significato: questo contatore indica che il set di lavoro di un processo è troppo grande per la memoria fisica disponibile che causa la memoria da pagina a disco. Mostra il numero di operazioni di lettura, senza considerare il numero di pagine recuperate in ogni operazione. I valori superiori indicano un collo di bottiglia di memoria.

      Se una bassa frequenza di operazioni di lettura pagina coincide con valori elevati per Disco fisico\% Tempo disco e Disco fisico\Media. Lunghezza coda disco, potrebbe esistere una condizione di collo di bottiglia di I/O del disco. Se un aumento della lunghezza della coda non è accompagnato da una diminuzione della frequenza di lettura delle pagine, esiste un collo di bottiglia della memoria dovuto a memoria fisica insufficiente.

  • Memoria\Pagine/sec

    • Soglia: un valore sostenuto di più di cinque indica un collo di bottiglia.

    • Significatività: questo contatore indica la frequenza con cui le pagine vengono lette o scritte su disco per risolvere gli errori della pagina disco rigido. Moltiplicare i valori dei contatori delle prestazioni Disco fisico\Media. Sec/Trasferimento e Memoria\Pagine/sec . Se il prodotto di questi valori supera 0,1, il paging utilizza più del 10% del tempo di accesso al disco, che indica che è disponibile memoria fisica insufficiente.

  • Memory\Pool Nonpaged Bytes

    • Soglia: controllare il valore di Memory\Pool Nonpaged Bytes per un aumento del 10% o superiore rispetto al valore all'avvio del sistema.

    • Significatività: un aumento del 10% o superiore rispetto al valore all'avvio può essere un'indicazione di una perdita di memoria.

  • Errori server\pool non di paging

    • Soglia: i valori normali diversi da zero indicano un collo di bottiglia.

    • Significatività: questo contatore indica il numero di volte in cui le allocazioni dal pool non di paging non sono riuscite. Il pool non di paging contiene pagine dello spazio indirizzi virtuale di un processo che non devono essere scambiate nel file di pagina su disco, ad esempio una tabella di oggetti kernel del processo. La disponibilità del pool non di paging determina il numero di processi, thread e altri oggetti che è possibile creare. Quando le allocazioni dal pool non di paging hanno esito negativo, ciò può essere dovuto a una perdita di memoria in un processo, in particolare se l'utilizzo del processore non è aumentato di conseguenza.

  • Errori di paging server\pool

    • Soglia: nessun valore specifico.

    • Significatività: questo contatore indica il numero di volte in cui le allocazioni dal pool di paging non sono riuscite. Un valore positivo per questo contatore è un'indicazione che il computer ha memoria fisica insufficiente o che il file di paging di Windows è troppo piccolo.

  • Server\Pool Nonpaged Peak

    • Soglia: nessun valore specifico.

    • Significato: numero massimo di byte nel pool non di paging riservato al server in un punto qualsiasi. Indica la quantità di memoria fisica che il computer deve avere. Poiché il pool non di paging deve risiedere nella memoria fisica e, poiché è necessario lasciare memoria per altre operazioni, come regola generale, il computer deve avere installato memoria fisica che è 4 volte il valore indicato per questo contatore.

  • Memoria\Byte cache

    • Soglia: nessun valore specifico.

    • Significatività: monitora le dimensioni della cache in condizioni di carico diverse. Questo valore di questo contatore delle prestazioni indica le dimensioni della cache dei file statici. Per impostazione predefinita, questo contatore usa circa il 50% della memoria disponibile, ma diminuisce se la memoria disponibile viene ridotta, che influisce sulle prestazioni del sistema.

  • Memoria\Errori della cache/sec

    • Soglia: nessun valore specifico.

    • Significatività: questo contatore indica la frequenza con cui il sistema operativo cerca i dati nella cache del file system, ma non riesce a trovarlo. Questo valore dovrebbe essere il più basso possibile.

  • Cache\MDL Read Hits %

    • Soglia: maggiore è questo valore, migliore sarà la prestazioni della cache del file system. I valori devono essere il più vicino possibile al 100%.

    • Significato: questo contatore fornisce la percentuale di richieste di lettura MDL (Memory Descriptor List) alla cache del file system, in cui la cache restituisce l'oggetto direttamente anziché richiedere una lettura dal disco rigido.

  • Process\Working Set

    • Soglia: nessun valore specifico.

    • Significatività: il working set è il set di pagine di memoria attualmente caricate in memoria (fisico + virtuale). Se il sistema dispone di memoria sufficiente, può mantenere spazio sufficiente nel working set in modo che non sia necessario eseguire operazioni su disco per paging della memoria su disco. Tuttavia, se la memoria non è sufficiente, il sistema tenta di ridurre il working set rimuovendo la memoria dai processi, con conseguente aumento degli errori di pagina. Quando la frequenza degli errori di pagina aumenta, il sistema tenta di aumentare il working set del processo. Se si osservano fluttuazioni estese nel working set, potrebbe indicare una carenza di memoria. I valori più elevati nel working set possono essere dovuti anche a più assembly in un'applicazione. È possibile migliorare il working set usando gli assembly condivisi nella Global Assembly Cache.

Risoluzione dei colli di bottiglia della memoria

Se si determina che la memoria è un collo di bottiglia nell'ambiente BizTalk Server, usare uno o più dei metodi seguenti per risolvere il collo di bottiglia:

  • Ottimizzare la quantità di memoria allocata se è possibile controllare l'allocazione. Ad esempio, è possibile ottimizzare questa opzione per BizTalk Server, ASP.NET e SQL Server.

  • Aumentare le dimensioni del file di paging di Windows e seguire la procedura descritta nella sezione "Configurare windows PAGEFILE per prestazioni ottimali" di Ottimizzazione delle prestazioni del sistema operativo.

  • Disattivare i servizi che non vengono usati. L'arresto dei servizi che non vengono usati regolarmente consente di risparmiare memoria e di migliorare le prestazioni del sistema. Per altre informazioni, vedere la sezione "Disabilitare i servizi non essenziali" di Ottimizzazione delle prestazioni del sistema operativo.

  • Rimuovere i protocolli e i driver non necessari. Anche i protocolli inattive usano spazio nei pool di memoria di paging e non di paging. Anche i driver utilizzano memoria, quindi è consigliabile rimuovere quelli non necessari. Per altre informazioni, vedere la sezione "Rimuovere protocolli di rete non necessari" di Ottimizzazione delle prestazioni del sistema operativo.

  • Installare memoria fisica aggiuntiva nei computer nell'ambiente BizTalk Server.

Nota

In un sistema a 32 bit BizTalk può usare un massimo di 2 GB di memoria, il limite aumenta a 3 GB con BizTalk Server 2010 e versioni successive se viene usata l'opzione /3GB. Per altre informazioni sull'utilizzo della memoria, vedere Limiti di memoria per le versioni di Windows.

Colli di bottiglia di I/O di rete

Potresti avere un collo di bottiglia di I/O di rete se...

  • Il valore del contatore delle prestazioni Interfaccia di rete \Byte totali/sec supera l'80% della larghezza di banda di rete disponibile.

  • Il valore del contatore delle prestazioni Server\Byte totali/sec è maggiore del 50% della larghezza di banda di rete disponibile.

Contatori delle prestazioni per la misurazione dei colli di bottiglia di I/O di rete

I contatori delle prestazioni seguenti devono essere usati per misurare le operazioni di I/O di rete e determinare se il sistema riscontra un collo di bottiglia correlato all'I/O di rete:

  • Interfaccia di rete\Byte totali/sec

    • Soglia: valore sostenuto superiore all'80% della capacità di rete.

    • Significatività: questo contatore indica la frequenza con cui i byte vengono inviati e ricevuti su ogni scheda di rete. Questo contatore consente di determinare se una scheda di rete è satura e se è necessario aggiungere una o più schede di rete per aumentare la larghezza di banda di rete disponibile.

  • Interfaccia di rete\Byte ricevuti/sec

    • Soglia: nessun valore specifico.

    • Significatività: questo contatore indica la frequenza con cui i byte vengono ricevuti su ogni scheda di rete. Usare il valore di questo contatore per calcolare la frequenza dei dati in ingresso come percentuale della larghezza di banda totale disponibile. Ciò consentirà di determinare se la larghezza di banda di rete deve essere aumentata nel client inviando dati a BizTalk Server o se la larghezza di banda di rete deve essere aumentata nel computer BizTalk Server stesso.

  • Interfaccia di rete\Byte inviati/sec

    • Soglia: nessun valore specifico.

    • Significatività: questo contatore indica la frequenza con cui i byte vengono inviati su ogni scheda di rete. Usare il valore di questo contatore per calcolare la frequenza dei dati in uscita come percentuale della larghezza di banda totale disponibile. Ciò consente di determinare se la larghezza di banda di rete deve essere aumentata nel BizTalk Server l'invio di dati a un client o se la larghezza di banda di rete deve essere aumentata nel computer client che riceve dati da BizTalk Server.

  • Server\Byte totale/sec

    • Soglia: valore sostenuto superiore al 50% della capacità di rete.

    • Significato: questo contatore indica il numero di byte inviati e ricevuti in rete. I valori più alti indicano un collo di bottiglia di I/O di rete. Se la somma di byte totali/sec per tutti i server è approssimativamente uguale alla velocità di trasferimento massima della rete, prendere in considerazione la subnet della rete per migliorare le prestazioni. Per altre informazioni sulla subnet di una rete per migliorare le prestazioni, vedere la sezione Subnet del BizTalk Server Ottimizzazione database.

Risoluzione dei colli di bottiglia di I/O di rete

Se si determina che l'I/O di rete è un collo di bottiglia nell'ambiente, usare uno o più dei metodi seguenti per risolvere il collo di bottiglia:

Vedere anche

Individuazione ed eliminazione dei colli di bottiglia