Configurazione del Registro di sistema
SymProxy archivia le impostazioni in questa chiave del Registro di sistema.
HKLM/Software/Microsoft/Symbol Server Proxy
Questa chiave del Registro di sistema controlla il percorso da cui trovare i simboli da archiviare nel sito Web, il livello di registrazione e se SymProxy opera con una connessione diretta alla rete. È possibile creare questa chiave eseguendo lo strumento di registrazione SymProxy (Symproxy.reg) fornito con Gli strumenti di debug per Windows. Digitare symproxy.reg al prompt dei comandi o fare doppio clic su di esso da Esplora risorse.
Verranno aggiunte voci per le impostazioni con prefisso "x" in modo che siano disabilitate. Per abilitare un'impostazione, rimuovere "x" da davanti all'impostazione desiderata.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Symbol Server Proxy]
"Available Settings"="Remove the 'x' prefix to use the setting"
"xMissAgeTimeout"=dword:00015180
"xMissAgeCheck"=dword:00000e10
"xMissTimeout"=dword:00000e10
"xNoCache"=dword:00000001
"xNoFilePointers"=dword:00000001
"xNoInternetProxy"=dword:00000001
"xNoLongerIndexedAuthoritive"=dword:00000001
"xNoUncompress"=dword:00000001
"xRequestTimeout"=dword:0000019
"xRetryAppHang"=dword:0000002
"xUriFilter"=dword:00000FF
"xUriTiers"=dword:0000001
Il file del Registro di sistema symproxy.reg presuppone un nome di directory virtuale symbols e configura il percorso del simbolo per l'uso del server dei simboli pubblico Microsoft.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Symbol Server Proxy\Web Directories]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Symbol Server Proxy\Web Directories\Symbols]
"SymbolPath"="https://msdl.microsoft.com/download/symbols"
Le voci di registrazione eventi in symproxy.reg sono descritte nella sezione Registro eventi di questo argomento.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\Microsoft-Windows-SymProxy]
"ProviderGuid"="{0876099c-a903-47ff-af14-52035bb479ef}"
"EventMessageFile"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,\
00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,\
5c,00,69,00,6e,00,65,00,74,00,73,00,72,00,76,00,5c,00,53,00,79,00,6d,00,50,\
00,72,00,6f,00,78,00,79,00,2e,00,64,00,6c,00,6c,00,00,00
"TypesSupported"=dword:00000007
Le voci della directory Web in symproxy.reg sono descritte in questo argomento.
Directory Web
Per ogni directory virtuale generata in IIS che si usa come archivio simboli, è necessario configurare una chiave del Registro di sistema sotto la sottochiave Directory Web della chiave del Registro di sistema seguente.
HKLM/Software/Microsoft/Symbol Server Proxy
Per modificare la chiave del Registro di sistema per una directory virtuale dell'archivio simboli
- Modificare il contenuto di SymbolPath in modo che contenga tutti gli archivi simboli utilizzati dall'archivio simboli SymProxy. Se è in uso più di un archivio simboli, separarli con un punto e virgola. Per ogni valore è supportato un massimo di 10 archivi. I percorsi HTTP devono includere il prefisso https:// e i percorsi UNC devono includere il \\ prefisso .
Ad esempio, se una delle directory virtuali è denominata Simboli e i simboli archiviano gli accessi si trovano nell'archivio UNC \\symbols\symbols e nell'archivio https://msdl.microsoft.com/download/symbolsHTTP , creare la chiave del Registro di sistema seguente.
HKLM/Software/Microsoft/Symbol Server Proxy/Web Directories/Symbols
Dopo aver creato questa chiave, modificare il relativo Percorso simbolo in modo che sia \\symbols\symbols;https://msdl.microsoft.com/download/symbols. Questa operazione può essere visualizzata nello screenshot seguente dell'editor del Registro di sistema.
In questo esempio SymProxy cerca innanzitutto i simboli in \\symbols\symbols. Se i file non vengono trovati, verrà usato Microsoft Symbol Store.
In ognuna delle chiavi in Directory Web che corrispondono ai nomi di Directory virtuali, deve essere creata una REG_SZ denominata SymbolPath. Il valore contiene tutti gli archivi di simboli upstream che verranno usati per popolare l'archivio simboli SymProxy.
Sono supportate al massimo 10 voci.
Separare le voci con punto e virgola.
I percorsi UNC devono includere il prefisso "\\"
I percorsi HTTP devono includere il prefisso "https://"
Ordinare i valori dal meno costoso al più costoso.
Sarà necessario bilanciare gli obiettivi di prestazioni di utilizzo rispetto ai costi di comunicazione dei dati e del server nel calcolo.
In generale, inserire server SMB/HTTP locali prima dei server HTTP Internet.
Contatori delle prestazioni SymProxy
SymProxy può generare contatori delle prestazioni tramite un provider denominato SymProxy.
Per abilitare il supporto dei contatori delle prestazioni, registrare il file manifesto symproxy in una finestra di comando dell'amministratore:
C:\> lodctr.exe /m:%WINDIR%\system32\inetsrv\symproxy.man
Per disabilitare il supporto dei contatori delle prestazioni, annullare la registrazione del manifesto:
C:\> unlodctr.exe /m:%WINDIR%\system32\inetsrv\symproxy.man
Traccia eventi SymProxy per Windows
SymProxy può creare eventi ETW tramite un provider denominato Microsoft-Windows-SymProxy.
C:\> logman query providers | findstr SymProxy
Microsoft-Windows-SymProxy {0876099C-A903-47FF-AF14-52035BB479EF}
Per abilitare il supporto ETW, registrare il file manifesto:
C:\> wevtutil.exe install-manifest %WINDIR%\system32\inetsrv\symproxy.man
Per disabilitare il supporto ETW, annullare la registrazione del file manifesto:
C:\> wevtutil.exe uninstall-manifest %WINDIR%\system32\inetsrv\symproxy.man
Registro eventi
Se ETW è configurato, gli eventi vengono registrati come eventi nei canali operativi e analitici in Registri applicazioni e servizi\Microsoft\Windows\SymProxy nel registro eventi.
Per visualizzare correttamente il messaggio delle voci del registro eventi, è necessario aggiungere al Registro eventi l'area registro eventi del file symproxy.reg:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\Microsoft-Windows-SymProxy]
"ProviderGuid"="{0876099c-a903-47ff-af14-52035bb479ef}"
"EventMessageFile"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,\
00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,\
5c,00,69,00,6e,00,65,00,74,00,73,00,72,00,76,00,5c,00,53,00,79,00,6d,00,50,\
00,72,00,6f,00,78,00,79,00,2e,00,64,00,6c,00,6c,00,00,00
"TypesSupported"=dword:00000007
Eventi SymProxy
SymProxy registra gli eventi seguenti:
ID evento | Descrizione | Channel |
---|---|---|
1 | Inizio del filtro ISAPI | Admin |
2 | Arresto del filtro ISAPI | Admin |
3 | Configurazione del filtro ISAPI | Admin |
4 | Statistiche di mancata memorizzazione nella cache | Admin |
10 | Richiesta URL - Riscontri nella cache locale | Operativo |
11 | Richiesta URL - Mancata memorizzazione nella cache locale | Operativo |
20 | Download dei simboli tramite SymSrv | Operativo |
30 | Simbolo critico mancante | Admin |
31 | Immagine critica mancante | Admin |
40 | SymSrv - Percorso non trovato | Admin |
41 | SymSrv - File non trovato | Admin |
42 | SymSrv - Accesso negato | Admin |
43 | SymSrv - Percorso troppo lungo | Admin |
49 | SymSrv : codice di errore | Admin |
90 | Conflitti di blocco | Operativo |
100 | Messaggio critico generale | Analitici |
101 | Messaggio di errore generale | Analitici |
102 | Messaggio di avviso generale | Analitici |
103 | Messaggio informativo generale | Analitici |
104 | Messaggio analitico generale | Analitici |
105 | Messaggio di debug generale | Debug |
Configurazione proxy del server di simboli
SymProxy archivia le impostazioni di configurazione nell'area della chiave del Registro di sistema seguente:
HKLM/Software/Microsoft/Symbol Server Proxy
Da questa posizione, SymProxy acquisisce le impostazioni globali e i percorsi dei simboli upstream store.
È possibile creare questa chiave combinando il file symproxy.reg personalizzato come illustrato in precedenza.
Chiave proxy del server simboli
La chiave del Registro di sistema Proxy del server simboli supporta le impostazioni globali seguenti (tutte le REG_DWORD). Le impostazioni possono essere applicate in tempo reale riciclando il pool di applicazioni. Verrà creato un nuovo processo di w3wp.exe e verrà letto i nuovi valori. Una volta completate tutte le richieste in sospeso al processo di w3wp.exe precedente, il processo di w3wp.exe precedente terminerà. IIS per impostazione predefinita ricicla w3wp.exe processi ogni 1.740 minuti (29 ore).
REG_DWORD | Descrizione |
NoInternetProxy | Quando si esegue come servizio, SymSrv.dll usa WinHTTP anziché WinInet per effettuare richieste HTTP. Di conseguenza, potrebbe essere necessario configurare le impostazioni proxy HTTP in modo che il servizio possa accedere alle risorse di rete esterne. È possibile eseguire questa operazione usando il programma netsh. Digitare "netsh.exe winhttp -?" per istruzioni. Per impostazione predefinita, SymProxy usa il proxy HTTP designato. Se non è configurato alcun proxy HTTP, SymProxy userà un proxy fittizio. Ciò consente l'accesso sicuro ai siti HTTP all'interno della intranet. Questo impedisce a SymProxy di connettersi direttamente ai siti non sicuri.
|
NoFilePointers | Per impostazione predefinita, per i simboli che non esistono, SymProxy cercherà un file file file.ptr accanto al file richiesto (nella cache locale). Se trovato, restituirà il percorso specificato dal file file.ptr. Questa capacità è necessaria solo quando la cache locale viene popolata da SymStore.exe.
|
NoUncompress | Per impostazione predefinita, SymProxy decompresserà i simboli scaricati prima di restituire il file al chiamante. Ciò riduce la CPU nel client, ma aumenta l'I/O.
|
Nocache | Per impostazione predefinita, SymProxy memorizza nella cache i simboli scaricati nel file system locale, definito dal percorso della directory virtuale.
|
MissTimeout | Periodo di timeout, in secondi, per cui i simboli mancanti vengono segnalati come mancanti senza eseguire nuovamente query sui server simboli upstream. Un errore è associato a un'ora UTC. Le richieste successive per il file vengono immediatamente rifiutate per N secondi. La prima richiesta per il file dopo N secondi causa la ri query degli archivi simboli upstream. In caso di esito positivo, il file di simboli viene restituito e la mancanza viene eliminata. In caso di errore, l'errore viene spostato in avanti all'ora corrente (in UTC) per avviare un nuovo periodo di timeout. Usare i contatori delle prestazioni "Miss Cache" per monitorare gli errori.
|
MissAgeCheck | Periodo tra i controlli di Miss Age. La cache miss viene analizzata e i record precedenti a MissAgeTimeout secondi vengono rimossi. Le statistiche correnti vengono salvate nel registro eventi usando l'ID evento 4.
|
MissAgeTimeout | Timeout di eliminazione di ogni voce della cache miss. La voce viene eliminata a causa dell'interruzione di qualsiasi richiesta per tutto questo periodo.
|
NoLongerIndexedAuthoritive | Se abilitata, una risposta file.ptr di NoLongerIndexed verrà considerata come autoriva in tutti gli archivi simboli. Usare questa opzione per evitare chiamate (non necessarie) ai server che non indicizzano il file.
|
RiprovareAppHang | Abilitare Riprovare agli archivi simboli HTTP upstream. Equivale all'opzione SSRVOPT_RETRY_APP_HANG SymSrv (0x80000000). Nella ricezione di un codice di errore 0x80070512/HRESULT_FROM_WIN32(ERROR_APP_HANG) tramite l'intestazione di risposta HTTP "Symbol-Agent-Status" da un archivio simboli HTTP upstream, il socket verrà mantenuto aperto e il get verrà ripetuto fino a 'N' volte. SymProxy raggruppa più richieste per lo stesso URI. Quando una richiesta in sospeso raggiunge 25 secondi, SymProxy restituirà 0x80070512 al chiamante tramite un'intestazione di risposta HTTP symbol-agent-status, ma continua l'operazione in background. I client devono abilitare l'opzione SSRVOPT_RETRY_APP_HANG in SymSrv in modo che le richieste lunghe (aggiuntive) siano supportate, in sostanza concatenando i tentativi a monte. SymProxy consente di impostazione predefinita il timeout della risposta a 25 secondi in modo che una risposta venga eseguita prima che il socket venga chiuso al timeout (impostazione predefinita) 30 secondi usato da SymSrv per gli archivi simboli HTTP. Le versioni successive di SymSrv inviano il valore di timeout HTTP configurato tramite l'intestazione della richiesta HTTP "Symbol-Agent-Receive-Timeout" (in mSec). Se viene specificata questa intestazione della richiesta HTTP, questo valore viene usato anziché il valore predefinito 25 secondi.
|
UriFilter | Abilitare il filtro URI. Equivale all'opzione SSRVOPT_URI_FILTER symsrv (0x20000000). Il filtro URI riduce la varietà di richieste a tutti gli archivi simboli upstream. I valori sono una maschera di bit. HTTP - SSRVURI_HTTP_MASK (0x0F)
UNC - SSRVURI_UNC_MASK (0xF0)
|
UriTiers | Abilitare i livelli URI. Equivale all'opzione SSRVOPT_URI_TIERS symsrv (0x40000000). I livelli URI forzano lo schema livello usato da tutti gli archivi simboli upstream. Quando non è impostato, è necessaria una richiesta aggiuntiva per determinare lo schema. L'esistenza di 'index2.txt' nella radice indica un layout a 2 livelli. Gli archivi a 1 livello sono in formato: /widget.dll/<index>/widget.dll|widget.dl_|file.ptr Gli archivi a 2 livelli sono in formato: /wi/widget.dll/<index>/widget.dll|widget.dl_|file.ptr
|
Accesso alle risorse di rete esterne
Quando SymSrv viene usato insieme a SymProxy, viene eseguito come servizio e usa l'API WinHTTP per accedere ai simboli tramite una connessione HTTP. Ciò è diverso dal comportamento consueto dell'uso di WinInet per questo scopo.
Di conseguenza, potrebbe essere necessario configurare le impostazioni proxy HTTP in modo che questo servizio possa accedere alle risorse di rete esterne. Usare uno dei metodi seguenti per configurare queste impostazioni:
Usare lo strumento Netsh (netsh.exe). Per istruzioni, digitare quanto segue in una finestra del prompt dei comandi:
netsh winhttp -?
Il comportamento predefinito di SymProxy consiste nell'usare qualsiasi proxy HTTP designato da ProxyCfg o Netsh. Se non è configurato alcun proxy HTTP, SymProxy usa un proxy fittizio per consentire l'accesso ai siti HTTP protetti all'interno della intranet. Come effetto collaterale, questa tecnica impedisce a SymProxy di lavorare con connessioni dirette a Internet esterno. Se si vuole consentire a SymProxy di funzionare con una connessione diretta a Internet, creare un valore REG_DWORD denominato NoInternetProxy nella chiave proxy del server di simboli del registro. Impostare il valore di NoInternetProxy su 1 e verificare che non sia presente alcun proxy HTTP indicato da ProxyCfg.