Konfigurace registru

SymProxy ukládá nastavení v tomto klíči registru.

HKLM/Software/Microsoft/Symbol Server Proxy

Tento klíč registru řídí umístění, ze kterého se mají najít symboly pro uložení na webu, úroveň protokolování a zda SymProxy funguje s přímým připojením k síti. Tento klíč můžete vytvořit spuštěním registračního nástroje SymProxy (Symproxy.reg) s nástroji pro ladění pro Windows. Na příkazovém řádku zadejte symproxy.reg nebo na něj poklikejte z Průzkumníka Windows.

Tím se do nastavení přidají položky, které budou mít předponu „x“, aby byly zakázané. Pokud chcete povolit nastavení, odeberte před požadovaným nastavením symbol x.

[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

Soubor registru symproxy.reg předpokládá název virtuálního adresáře symbolů a nakonfiguruje cestu symbolu tak, aby používal server veřejných symbolů Společnosti 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"

Položky protokolování událostí v symproxy.reg jsou zmíněny později v části Protokol událostí tohoto tématu.

[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

Položky webového adresáře v symproxy.reg jsou popsány v tomto tématu.

Webové adresáře

Pro každý virtuální adresář vygenerovaný ve službě IIS, který používáte jako úložiště symbolů, musíte nastavit klíč registru pod podklíčem webových adresářů následujícího klíče registru.

HKLM/Software/Microsoft/Symbol Server Proxy

Úprava klíče registru pro virtuální adresář úložiště symbolů

  • Upravte obsah SymbolPath tak, aby obsahoval všechna úložiště symbolů používaná úložištěm symbolů SymProxy. Pokud se používá více než jedno úložiště symbolů, oddělte je středníky. Pro každou hodnotu se podporuje maximálně 10 úložišť. Cesty HTTP musí obsahovat předponu https:// a cesty UNC musí obsahovat předponu \\ .

Pokud se například jeden z virtuálních adresářů nazývá Symboly a symboly, ke kterým přistupuje, jsou umístěny v úložišti UNC \\symbols\symbols\symbols a úložiště https://msdl.microsoft.com/download/symbolsHTTP, vytvořte následující klíč registru.

HKLM/Software/Microsoft/Symbol Server Proxy/Web Directories/Symbols

Po vytvoření tohoto klíče upravte cestu SymbolPath tak, aby byla \\symbols\symbols;https://msdl.microsoft.com/download/symbols. To je vidět na následujícím snímku obrazovky Editoru registru.

Snímek obrazovky s editorem registru zobrazující aktualizovanou cestu SymbolPath

V tomto příkladu SymProxy nejprve vyhledá symboly v \\symbols\symbols. Pokud tam soubory nenajdete, použije se Microsoft Symbol Store.

  • V každém z klíčů pod webovými adresáři, které odpovídají názvům virtuálních adresářů, je potřeba vytvořit REG_SZ s názvem SymbolPath. Hodnota obsahuje všechna upstreamová úložiště symbolů, která budou použita k naplnění úložiště symbolů SymProxy.

  • Podporuje se maximálně 10 položek.

  • Položky oddělte středníky.

  • Cesty UNC musí obsahovat předponu \\.

  • Cesty HTTP musí obsahovat předponu "https://".

  • Sespořádejte hodnoty od nejlevnějších po nejdražší.

    • Při výpočtu budete muset vyvážit výkonnostní cíle využití a náklady na komunikaci mezi servery a daty.

    • Obecně platí, že místní servery SMB/HTTP umístěte před internetové servery HTTP.

Čítače výkonu SymProxy

SymProxy může generovat čítače výkonu prostřednictvím poskytovatele s názvem SymProxy.

Pokud chcete povolit podporu čítačů výkonu, zaregistrujte soubor manifestu symproxy v příkazovém okně správce:

C:\> lodctr.exe /m:%WINDIR%\system32\inetsrv\symproxy.man

Pokud chcete zakázat podporu čítačů výkonu, zrušte registraci manifestu:

C:\> unlodctr.exe /m:%WINDIR%\system32\inetsrv\symproxy.man

Trasování událostí SymProxy pro Windows

SymProxy může vytvářet události ETW prostřednictvím poskytovatele s názvem Microsoft-Windows-SymProxy.

C:\> logman query providers | findstr SymProxy
Microsoft-Windows-SymProxy {0876099C-A903-47FF-AF14-52035BB479EF}

Pro povolení podpory ETW zaregistrujte soubor manifestu:

C:\> wevtutil.exe install-manifest %WINDIR%\system32\inetsrv\symproxy.man

Chcete-li zakázat podporu pro ETW, zrušte registraci souboru manifestu:

C:\> wevtutil.exe uninstall-manifest %WINDIR%\system32\inetsrv\symproxy.man

Protokol událostí

Pokud je služba EtW nakonfigurovaná, události se zaznamenávají jako události v kanálech Provozní a analytická analýza v části Protokoly aplikací a služeb\Microsoft\Windows\SymProxy v protokolu událostí.

Aby bylo možné správně zobrazit zprávu položek protokolu událostí, musí být do registru přidána oblast protokolu událostí souboru 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

Události SymProxy

SymProxy protokoluje následující události:

ID události popis kanál
1 Začátek filtru ISAPI Administrátor
2 Zastavení filtru ISAPI Administrátor
3 Konfigurace filtru ISAPI Administrátor
4 Statistika chybějící mezipaměti Administrátor
10 Žádost o adresu URL – Přístup k místní mezipaměti V provozu
11 Žádost o adresu URL – Chybějící místní mezipaměť V provozu
20 Stažení symbolu přes SymSrv V provozu
30 Chybí kritický symbol. Administrátor
31 Chybí kritický obrázek. Administrátor
40 SymSrv – Cesta nebyla nalezena Administrátor
41 SymSrv – Soubor nebyl nalezen Administrátor
42 SymSrv – Přístup odepřen Administrátor
43 SymSrv – Cesta je příliš dlouhá Administrátor
49 SymSrv – kód chyby Administrátor
90 Soutěžení o zámek V provozu
100 Obecná kritická zpráva Analytický
101 Obecná chybová zpráva Analytický
102 Obecná zpráva upozornění Analytický
103 Obecná informační zpráva Analytický
104 Obecná analytická zpráva Analytický
105 Obecná zpráva ladění Ladění

Konfigurace proxy serveru symbolů

SymProxy ukládá nastavení konfigurace do následující oblasti klíče registru:

HKLM/Software/Microsoft/Symbol Server Proxy

Z této lokace SymProxy získává svá globální nastavení a symbolické cesty k upstreamovým úložištím symbolů.

Tento klíč můžete vytvořit sloučením v souboru symproxy.reg, který jste přizpůsobili dříve.

Proxy klíč pro server symbolů

Klíč registru proxy serveru symbolů podporuje následující globální nastavení (všechny REG_DWORD). Nastavení lze použít okamžitě recyklací fondu aplikací. Vytvoří se nový proces w3wp.exe a načte nové hodnoty. Jakmile se dokončí všechny čekající požadavky na starý proces w3wp.exe, starý proces w3wp.exe skončí. Služba IIS ve výchozím nastavení recykluje w3wp.exe procesy každých 1 740 minut (29 hodin).

REG_DWORD Popis
NoInternetProxy (bez internetového proxy)

Při spuštění jako služby SymSrv.dll k vytváření požadavků HTTP používá WinHTTP místo WinInetu. V důsledku toho možná budete muset nastavit nastavení proxy serveru HTTP, aby služba mohla přistupovat k externím síťovým prostředkům. Můžete to provést pomocí programu netsh. Zadejte "netsh.exe winhttp -?" pro pokyny.

Ve výchozím nastavení používá SymProxy určený proxy server HTTP. Pokud není nakonfigurovaný žádný proxy server HTTP, použije SymProxy fiktivní proxy server. To umožňuje zabezpečený přístup k webům HTTP v rámci intranetu. Jako vedlejší účinek to brání SymProxy přímo připojit k nezabezpečeným webům.

  • Nezadané – (výchozí) Zakázáno – Používá se proxy server.
  • 0 – Vypnuto
  • 1+ – Povoleno

NoFilePointers

Ve výchozím nastavení pro symboly, které neexistují, bude SymProxy hledat soubor.ptr vedle požadovaného souboru (v místní mezipaměti). Pokud se najde, vrátí umístění určené souborem file.ptr. Tato schopnost je vyžadována pouze v případě, že je místní mezipaměť naplněna SymStore.exe.

  • Neurčeno – (výchozí) zakázáno – soubory file.ptr se vyhledávají nebo čtou.
  • 0 – Vypnuto
  • 1+ – Povoleno

NoUncompress

Ve výchozím nastavení SymProxy dekomprimuje stažené symboly před vrácením souboru volajícímu. Tím se sníží využití procesoru v klientovi, ale zvýší se vstupně-výstupní operace.

  • Nezadané – (výchozí) Zakázáno – Dochází k dekompresi
  • 0 – Vypnuto
  • 1+ – Povoleno

NoCache

Ve výchozím nastavení bude SymProxy ukládat stažené symboly do místního systému souborů definované cestou virtuálního adresáře.

  • Nezadané – (výchozí) Zakázáno – Ukládání do mezipaměti probíhá
  • 0 – Zakázáno
  • 1+ – Povoleno

MissTimeout

Doba časového limitu v sekundách, po kterou jsou chybějící symboly hlášeny jako chybějící bez opětovného dotazování mateřských serverů symbolů.

K času založenému na standardu UTC je přidružena chybějící hodnota. Následné požadavky na soubor se okamžitě zamítnou po dobu N sekund.

První požadavek na soubor po N sekundách způsobí, že se znovu dotazují nadřazená úložiště symbolů.

V případě úspěchu se vrátí soubor symbolů a chybějící se odstraní.

Při selhání se zmeškaný úkon posune na aktuální čas (v UTC), aby začalo nové období časového omezení.

K monitorování neúspěšných chyb použijte čítače výkonu Miss Cache.

  • Nezadané – (výchozí) 300 sekund za 5 minut
  • 0 – Funkce zakázaná
  • N – Časový limit trvá n sekund

MissAgeCheck

Období mezi kontrolami věku miss. Mezipaměť Miss se naskenuje a odeberou se záznamy starší než MissAgeTimeout sekundy.

Aktuální statistiky se ukládají do protokolu událostí pomocí ID události 4.

  • Nezadané – (výchozí) 3600 sekund / 1 hodina
  • 0 – Funkce zakázaná
  • N – Období mezi kontrolami v N sekundách

MissAgeTimeout

Vyprázdnění časového limitu každé položky mezipaměti Miss. Položka je vyprázdněna z důvodu absense jakékoli žádosti o ni během tohoto období.

  • Nezadané – (výchozí) 86400 sekund / 1 den
  • 0 – Funkce zakázaná
  • N – Časový limit položek v N sekundách

NoLongerIndexedAuthoritive

Pokud je tato možnost povolená, bude odpověď file.ptr NoLongerIndexed považována za autoritativní ve všech úložištích symbolů.

Tímto způsobem se můžete vyhnout (zbytečným) voláním serverů, které soubor neindexuje.

  • Nezadané – (výchozí) Zakázáno
  • 0 – Deaktivováno
  • 1+ – Povoleno

RetryAppHang

Povolte opakování do upstreamových úložišť symbolů HTTP. To odpovídá možnosti SymSrv SSRVOPT_RETRY_APP_HANG (0x80000000).

Při přijetí kódu chyby 0x80070512/HRESULT_FROM_WIN32(ERROR_APP_HANG) prostřednictvím hlavičky odpovědi HTTP 'Symbol-Agent-Status' z upstreamového úložiště symbolů HTTP zůstane soket otevřený a metoda GET se zopakuje až Nkrát.

SymProxy spojí více požadavků na stejný identifikátor URI. Když jakýkoli čekající požadavek dosáhne 25 sekund, vrátí SymProxy volajícímu 0x80070512 prostřednictvím hlavičky odpovědi HTTP Symbol-Agent-Status, ale pokračuje v operaci na pozadí.

Klienti by měli povolit možnost SSRVOPT_RETRY_APP_HANG v SymSrv, aby byly podporovány mimořádně dlouhé požadavky – v podstatě řetězením opakování na vyšší úroveň.

SymProxy ve výchozím nastavení nastaví časový limit odpovědi na 25 sekund, aby byla odpověď odeslána před tím, než se soket ukončí v rámci (výchozího) 30sekundového časového limitu, který SymSrv používá při připojení k úložištím symbolů HTTP. Novější verze SymSrv odesílají nakonfigurovanou hodnotu časového limitu HTTP prostřednictvím hlavičky požadavku HTTP Symbol-Agent-Receive-Timeout (v mSec). Pokud je zadána tato hlavička požadavku HTTP, použije se tato hodnota místo 25sekundového výchozího nastavení.

  • Nezadané – (výchozí) Zakázáno
  • 0 – Zakázáno
  • N – Pokusy o opakování

UriFilter

Povolte filtrování identifikátorů URI. To odpovídá možnosti SymSrv SSRVOPT_URI_FILTER (0x20000000).

Filtrování identifikátorů URI snižuje množství požadavků na všechny upstreamové úložiště symbolů. Hodnoty jsou bitové masky.

HTTP – SSRVURI_HTTP_MASK (0x0F)

  • 0x01 - SSRVURI_HTTP_NORMAL - např. http://symbols/.../foo.pdb
  • 0x02 - SSRVURI_HTTP_COMPRESSED - např. http://symbols/.../foo.pd_
  • 0x04 - SSRVURI_HTTP_FILEPTR - např. http://symbols/.../file.ptr

UNC – SSRVURI_UNC_MASK (0xF0)

  • 0x10 - SSRVURI_UNC_NORMAL - např. \\MyServer\Symbols\...\foo.pdb
  • 0x20 - SSRVURI_UNC_COMPRESSED - např. \\MyServer\Symbols\...\foo.pd_
  • 0x40 – SSRVURI_UNC_FILEPTR – např. \\MyServer\Symbols\...\file.ptr

UriTiers

Povolte úrovně identifikátoru URI. To odpovídá možnosti SymSrv SSRVOPT_URI_TIERS (0x40000000).

Vrstvy URI vynutí schéma vrstvy, které se používá ve všech upstreamových úložištích symbolů. Pokud není nastavená, k určení schématu se vyžaduje další požadavek. Existenceindex2.txtv kořenovém adresáři označuje rozložení o 2 vrstvě.

1-vrstvé úložiště je ve formátu: /widget.dll/<index>/widget.dll|widget.dl_|file.ptr

2vrstvé obchody jsou ve formátu: /wi/widget.dll/<index>/widget.dll|widget.dl_|file.ptr

  • Nezadané – (výchozí) Zakázáno
  • 0 – Zakázáno
  • 1 – Jednoúrovňové obchody se symboly
  • 2 – 2úrovňové úložiště symbolů

Přístup k externím síťovým prostředkům

Když se SymSrv používá ve spojení s SymProxy, běží jako služba a používá rozhraní API WinHTTP pro přístup k symbolům přes připojení HTTP. To se liší od obvyklého chování použití WinInet pro tento účel.

V důsledku toho může být potřeba nastavit nastavení proxy serveru HTTP tak, aby tato služba mohla přistupovat k externím síťovým prostředkům. Ke konfiguraci těchto nastavení použijte jednu z následujících metod:

  • Použijte nástroj Netsh (netsh.exe). Pokyny zobrazíte zadáním následujícího příkazu v okně příkazového řádku:

    netsh winhttp -? 
    

Výchozím chováním SymProxy je použití libovolného proxy serveru HTTP určeného proxy serverem ProxyCfg nebo Netsh. Pokud není nakonfigurovaný žádný proxy server HTTP, používá SymProxy fiktivní proxy server, který umožňuje přístup k zabezpečeným webům HTTP v intranetu. Jako vedlejší účinek tato technika zabraňuje SymProxy pracovat s přímými připojeními k externímu internetu. Pokud chcete povolit, aby SymProxy fungoval s přímým připojením k internetu, vytvořte REG_DWORD hodnotu s názvem NoInternetProxy v klíči proxy serveru symbolů vašeho registru. Nastavte hodnotu NoInternetProxy na 1 a ověřte, že v ProxyCfg není uveden žádný HTTP proxy server.