Konfigurieren der Registrierung
SymProxy speichert seine Einstellungen in diesem Registrierungsschlüssel.
HKLM/Software/Microsoft/Symbol Server Proxy
Dieser Registrierungsschlüssel steuert den Speicherort, an dem Symbole zum Speichern auf der Website gefunden werden sollen, die Protokollierungsebene und ob SymProxy mit einer direkten Verbindung mit dem Netzwerk arbeitet oder nicht. Sie können diesen Schlüssel erstellen, indem Sie das Mit Debugtools für Windows bereitgestellte SymProxy-Registrierungstool (Symproxy.reg) ausführen. Geben Sie symproxy.reg an der Eingabeaufforderung ein, oder doppelklicken Sie auf windows Explorer darauf.
Dadurch werden Einträge für die Einstellungen hinzugefügt, denen ein "x" vorangestellt wird, sodass sie deaktiviert sind. Um eine Einstellung zu aktivieren, entfernen Sie "x" vor der gewünschten Einstellung.
[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
Die Registrierungsdatei symproxy.reg setzt den Namen des virtuellen Verzeichnisses Symbole voraus und konfiguriert den Symbolpfad für die Verwendung des öffentlichen Microsoft-Symbolservers.
[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"
Die Ereignisprotokollierungseinträge in symproxy.reg werden im Abschnitt Ereignisprotokoll dieses Themas behandelt.
[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
Die Webverzeichniseinträge in symproxy.reg werden in diesem Thema erläutert.
Webverzeichnisse
Für jedes in IIS generierte virtuelle Verzeichnis, das Sie als Symbolspeicher verwenden, müssen Sie einen Registrierungsschlüssel unter dem Unterschlüssel Webverzeichnisse des folgenden Registrierungsschlüssels einrichten.
HKLM/Software/Microsoft/Symbol Server Proxy
So bearbeiten Sie den Registrierungsschlüssel für ein virtuelles Symbolverzeichnis
- Bearbeiten Sie den Inhalt von SymbolPath so, dass er alle vom SymProxy-Symbolspeicher verwendeten Symbolspeicher enthält. Wenn mehrere Symbolspeicher verwendet werden, trennen Sie diese durch Semikolons. Für jeden Wert werden maximal 10 Speicher unterstützt. HTTP-Pfade müssen das Präfix https:// enthalten, und UNC-Pfade müssen das \\ Präfix enthalten.
Wenn eines der virtuellen Verzeichnisse beispielsweise Symbole genannt wird und sich die Symbole, auf die zugegriffen wird, im UNC-Speicher \\symbols und im HTTP-Speicher https://msdl.microsoft.com/download/symbolsbefinden, erstellen Sie den folgenden Registrierungsschlüssel.
HKLM/Software/Microsoft/Symbol Server Proxy/Web Directories/Symbols
Nachdem dieser Schlüssel erstellt wurde, bearbeiten Sie seinen SymbolPath als \\symbols;https://msdl.microsoft.com/download/symbols. Dies ist im folgenden Screenshot des Registrierungs-Editors zu sehen.
In diesem Beispiel sucht SymProxy zunächst nach Symbolen in \\symbols\symbols. Wenn die Dateien dort nicht gefunden werden, wird der Microsoft Symbol Store verwendet.
In jedem der Schlüssel unter Webverzeichnisse, die den Namen des virtuellen Verzeichnisses entsprechen, muss ein REG_SZ namens SymbolPath erstellt werden. Der Wert enthält alle Upstream Symbolspeicher, die zum Auffüllen des SymProxy-Symbolspeichers verwendet werden.
Maximal 10 Einträge werden unterstützt.
Trennen Sie Einträge mit Semikolons.
UNC-Pfade müssen das Präfix "\\" enthalten
HTTP-Pfade müssen das Präfix "https://" enthalten
Ordnen Sie die Werte von den günstigsten bis zu den teuersten werten an.
Bei der Berechnung müssen Sie die Nutzungsleistungsziele mit den Kosten für Server- und Datenkommunikation abwägen.
Stellen Sie im Allgemeinen lokale SMB/HTTP-Server vor HTTP-Internetservern.
SymProxy-Leistungsindikatoren
SymProxy kann Leistungsindikatoren über einen Anbieter namens SymProxy ausgeben.
Um die Unterstützung der Leistungsindikatoren zu aktivieren, registrieren Sie die symproxy-Manifestdatei in einem Administratorbefehlsfenster:
C:\> lodctr.exe /m:%WINDIR%\system32\inetsrv\symproxy.man
Um die Unterstützung der Leistungsindikatoren zu deaktivieren, heben Sie die Registrierung des Manifests auf:
C:\> unlodctr.exe /m:%WINDIR%\system32\inetsrv\symproxy.man
SymProxy-Ereignisablaufverfolgung für Windows
SymProxy kann ETW-Ereignisse über einen Anbieter namens Microsoft-Windows-SymProxy erstellen.
C:\> logman query providers | findstr SymProxy
Microsoft-Windows-SymProxy {0876099C-A903-47FF-AF14-52035BB479EF}
Um die ETW-Unterstützung zu aktivieren, registrieren Sie die Manifestdatei:
C:\> wevtutil.exe install-manifest %WINDIR%\system32\inetsrv\symproxy.man
Um die ETW-Unterstützung zu deaktivieren, heben Sie die Registrierung der Manifestdatei auf:
C:\> wevtutil.exe uninstall-manifest %WINDIR%\system32\inetsrv\symproxy.man
Ereignisprotokoll
Wenn ETW konfiguriert ist, werden die Ereignisse als Ereignisse in den Kanälen Operational und Analytic unter Anwendungs- und Dienstprotokolle\Microsoft\Windows\SymProxy im Ereignisprotokoll aufgezeichnet.
Um die Meldung der Ereignisprotokolleinträge ordnungsgemäß anzuzeigen, muss der Bereich Ereignisprotokoll der Datei symproxy.reg der Registrierung hinzugefügt werden:
[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
SymProxy-Ereignisse
SymProxy protokolliert die folgenden Ereignisse:
Ereignis-ID | Beschreibung | Kanal |
---|---|---|
1 | Start des ISAPI-Filters | Administrator |
2 | Beenden des ISAPI-Filters | Administrator |
3 | Konfiguration des ISAPI-Filters | Admin |
4 | Cachestatistik verpassen | Administrator |
10 | URL-Anforderung – Lokaler Cachetreffer | Bei Betrieb |
11 | URL-Anforderung– Fehler beim lokalen Cache | Bei Betrieb |
20 | Symboldownload über SymSrv | Bei Betrieb |
30 | Kritisches Symbol fehlt | Administrator |
31 | Kritisches Bild fehlt | Administrator |
40 | SymSrv – Pfad nicht gefunden | Administrator |
41 | SymSrv – Datei nicht gefunden | Administrator |
42 | SymSrv – Zugriff verweigert | Administrator |
43 | SymSrv – Pfad zu lang | Administrator |
49 | SymSrv – Fehlercode | Administrator |
90 | Konflikt bei Sperre | Bei Betrieb |
100 | Allgemeine kritische Nachricht | Analytic |
101 | Allgemeine Fehlermeldung | Analytic |
102 | Allgemeine Warnmeldung | Analytic |
103 | Allgemeine Informationsmeldung | Analytic |
104 | Allgemeine Analysenachricht | Analytic |
105 | Allgemeine Debugmeldung | Debuggen |
Konfiguration des Symbolserverproxys
SymProxy speichert seine Konfigurationseinstellungen im folgenden Registrierungsschlüsselbereich:
HKLM/Software/Microsoft/Symbol Server Proxy
Von diesem Speicherort aus ruft SymProxy seine globalen Einstellungen und die Symbolpfade von Upstream Symbolspeichern ab.
Sie können diesen Schlüssel erstellen, indem Sie die Datei symproxy.reg zusammenführen, die Sie wie zuvor beschrieben angepasst haben.
Symbolserverproxyschlüssel
Der Proxyregistrierungsschlüssel des Symbolservers unterstützt die folgenden globalen Einstellungen (alle REG_DWORD). Einstellungen können live angewendet werden, indem der Anwendungspool wiederverwendet wird. Es wird ein neuer w3wp.exe Prozess erstellt, der die neuen Werte liest. Sobald alle ausstehenden Anforderungen an den alten w3wp.exe Prozess abgeschlossen sind, endet der alte w3wp.exe Prozess. IIS verwendet standardmäßig w3wp.exe Prozesse alle 1.740 Minuten (29 Stunden).
REG_DWORD | BESCHREIBUNG |
NoInternetProxy | Bei der Ausführung als Dienst verwendet SymSrv.dll WinHTTP anstelle von WinInet, um HTTP-Anforderungen zu senden. Daher müssen Sie möglicherweise HTTP-Proxyeinstellungen einrichten, damit der Dienst auf externe Netzwerkressourcen zugreifen kann. Dazu können Sie das Netsh-Programm verwenden. Geben Sie "netsh.exe winhttp -?" ein. . Standardmäßig verwendet SymProxy den angegebenen HTTP-Proxy. Wenn kein HTTP-Proxy konfiguriert ist, verwendet SymProxy einen Dummyproxy. Dies ermöglicht den sicheren Zugriff auf HTTP-Websites in Ihrem Intranet. Als Nebeneffekt verhindert dies, dass SymProxy eine direkte Verbindung mit nicht sicheren Websites herstellt.
|
NoFilePointers | Standardmäßig sucht SymProxy für Symbole, die nicht vorhanden sind, nach einer datei.ptr-Datei neben der angeforderten Datei (im lokalen Cache). Wenn sie gefunden wird, wird der von der Datei file.ptr angegebene Speicherort zurückgegeben. Diese Fähigkeit ist nur erforderlich, wenn der lokale Cache von SymStore.exe aufgefüllt wird.
|
NoUncompress | Standardmäßig dekomprimiert SymProxy heruntergeladene Symbole, bevor die Datei an den Aufrufer zurückgegeben wird. Dadurch wird die CPU auf dem Client reduziert, aber die E/A erhöht.
|
Nocache | Standardmäßig speichert SymProxy heruntergeladene Symbole im lokalen Dateisystem zwischen, das durch den Pfad des virtuellen Verzeichnisses definiert wird.
|
MissTimeout | Timeoutzeitraum in Sekunden, für den fehlende Symbole als fehlend gemeldet werden, ohne die Upstream-Symbolserver erneut abfragen zu müssen. Ein Fehler wird einer UTC-basierten Uhrzeit zugeordnet. Nachfolgende Anforderungen für die Datei werden sofort für N Sekunden abgelehnt. Die erste Anforderung für die Datei nach N Sekunden bewirkt, dass die Upstream Symbolspeicher erneut abgefragt werden. Bei Erfolg wird die Symboldatei zurückgegeben, und der Fehler wird gelöscht. Bei einem Fehler wird der Fehler zur aktuellen Zeit (in UTC) verschoben, um einen neuen Timeoutzeitraum zu starten. Verwenden Sie die Leistungsindikatoren "Miss Cache", um die Fehler zu überwachen.
|
MissAgeCheck | Zeitraum zwischen Miss Age-Überprüfungen. Der Fehlercache wird überprüft, und Datensätze, die älter als MissAgeTimeout-Sekunden sind, werden entfernt. Die aktuellen Statistiken werden mithilfe der Ereignis-ID 4 im Ereignisprotokoll gespeichert.
|
MissAgeTimeout | Timeout für jeden Fehlercacheeintrag löschen. Der Eintrag wird aufgrund des Unsinns einer Anforderung für ihn während dieses Zeitraums gelöscht.
|
NoLongerIndexedAuthoritive | Wenn diese Option aktiviert ist, wird eine File.ptr-Antwort von NoLongerIndexed in allen Symbolspeichern als autoritiv behandelt. Verwenden Sie diese Option, um (unnötige) Aufrufe von Servern zu vermeiden, die die Datei nicht indizieren.
|
RetryAppHang | Aktivieren Sie Wiederholungsversuche für die Upstream HTTP-Symbolspeicher. Dies entspricht der Option symSrv SSRVOPT_RETRY_APP_HANG (0x80000000). Beim Empfang eines 0x80070512/HRESULT_FROM_WIN32(ERROR_APP_HANG)-Fehlercodes über den HTTP-Antwortheader "Symbol-Agent-Status" aus einem Upstream HTTP-Symbolspeicher wird der Socket geöffnet gehalten, und die GET-Datei wird bis zu N-Mal wiederholt. SymProxy vereint mehrere Anforderungen für denselben URI. Wenn eine ausstehende Anforderung 25 Sekunden erreicht, gibt SymProxy über den HTTP-Antwortheader "Symbol-Agent-Status" 0x80070512 an den Aufrufer zurück, setzt den Vorgang jedoch im Hintergrund fort. Clients sollten die Option SSRVOPT_RETRY_APP_HANG in SymSrv aktivieren, sodass (extra) lange Anforderungen unterstützt werden– im Wesentlichen verkettet die Wiederholungsversuche Upstream. SymProxy gibt das Antworttimeout standardmäßig auf 25 Sekunden an, sodass eine Antwort vor dem Schließen des Sockets bei dem (Standard-) 30-Sekunden-Timeout erfolgt, das SymSrv für HTTP-Symbolspeicher verwendet. Spätere Versionen von SymSrv senden den konfigurierten HTTP-Timeoutwert über den HTTP-Anforderungsheader "Symbol-Agent-Receive-Timeout" (in mSec). Wenn dieser HTTP-Anforderungsheader bereitgestellt wird, wird dieser Wert anstelle des Standardwerts von 25 Sekunden verwendet.
|
UriFilter | Aktivieren Sie die URI-Filterung. Dies entspricht der Option symSrv SSRVOPT_URI_FILTER (0x20000000). Die URI-Filterung reduziert die Anzahl der Anforderungen an alle Upstream Symbolspeicher. Die Werte sind eine Bitmaske. HTTP– SSRVURI_HTTP_MASK (0x0F)
UNC – SSRVURI_UNC_MASK (0xF0)
|
UriTiers | Aktivieren Sie URI-Ebenen. Dies entspricht der Option symSrv SSRVOPT_URI_TIERS (0x40000000). URI-Ebenen erzwingen das Ebenenschema, das von allen Upstream Symbolspeichern verwendet wird. Wenn sie nicht festgelegt ist, ist eine zusätzliche Anforderung erforderlich, um das Schema zu bestimmen. Die Existenz von "index2.txt" im Stamm weist auf ein Layout mit zwei Ebenen hin. Speicher mit 1 Ebene haben das Format /widget.dll/<index>/widget.dll|widget.dl_|file.ptr Speicher mit zwei Ebenen haben das Format /wi/widget.dll/<index>/widget.dll|widget.dl_|file.ptr
|
Zugreifen auf externe Netzwerkressourcen
Wenn SymSrv in Verbindung mit SymProxy verwendet wird, wird es als Dienst ausgeführt und verwendet die WinHTTP-API, um über eine HTTP-Verbindung auf Symbole zuzugreifen. Dies unterscheidet sich vom üblichen Verhalten der Verwendung von WinInet für diesen Zweck.
Daher müssen Sie möglicherweise HTTP-Proxyeinstellungen einrichten, damit dieser Dienst auf externe Netzwerkressourcen zugreifen kann. Verwenden Sie eine der folgenden Methoden, um diese Einstellungen zu konfigurieren:
Verwenden Sie das Netsh-Tool (netsh.exe). Um Anweisungen zu erhalten, geben Sie Folgendes in ein Eingabeaufforderungsfenster ein:
netsh winhttp -?
Das Standardverhalten von SymProxy besteht darin, jeden HTTP-Proxy zu verwenden, der entweder von ProxyCfg oder Netsh festgelegt wird. Wenn kein HTTP-Proxy konfiguriert ist, verwendet SymProxy einen Dummyproxy, um den Zugriff auf sichere HTTP-Websites in Ihrem Intranet zu ermöglichen. Als Nebeneffekt verhindert diese Technik, dass SymProxy mit direkten Verbindungen mit dem externen Internet arbeitet. Wenn Sie SymProxy erlauben möchten, mit einer direkten Verbindung mit dem Internet zu arbeiten, erstellen Sie einen REG_DWORD Wert namens NoInternetProxy im Symbolserver-Proxyschlüssel Ihrer Registrierung. Legen Sie den Wert von NoInternetProxy auf 1 fest, und vergewissern Sie sich, dass kein HTTP-Proxy von ProxyCfg angegeben ist.