SymProxy 會將其設定儲存在此登錄機碼中。
HKLM/Software/Microsoft/Symbol Server Proxy
此登錄機碼會控制從哪裡尋找要存放至網站的符號的位置、記錄層級,以及 SymProxy 是否透過直接連線運作於網路上。 您可以執行 Windows 偵錯工具所提供的 SymProxy 註冊工具 (Symproxy.reg)來建立此金鑰。 在命令提示字元中輸入 symproxy.reg,或從 Windows 檔案總管按兩下。
這會為這些設定新增條目,並在前面加上「x」以將其停用。 若要啟用設定,請從所需的設定前面移除 「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
symproxy.reg登錄檔假設符號的虛擬目錄名稱,並將符號路徑設定為使用 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"
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
本主題將討論symproxy.reg中的網頁目錄項目。
Web 目錄
在 IIS 中,對於每個用作符號存放區的虛擬目錄,您必須在下列登錄機碼下的 Web 目錄 子機碼中設定一個登錄機碼。
HKLM/Software/Microsoft/Symbol Server Proxy
編輯符號儲存區虛擬目錄的登錄鍵
- 編輯 SymbolPath 的內容,以包含 SymProxy 符號存放區所使用的所有符號存放區。 如果有一個以上的符號存放區正在使用,請以分號分隔它們。 每個值最多支援10個商店。 HTTP 路徑必須包含 https:// 前置詞,而 UNC 路徑必須包含 \\ 前置詞。
例如,如果其中一個虛擬目錄稱為 Symbols,而且其存取的符號存放區位於 UNC 存放區 \\symbols\symbols\symbols 和 HTTP 存放區 https://msdl.microsoft.com/download/symbols,請建立下列登錄機碼。
HKLM/Software/Microsoft/Symbol Server Proxy/Web Directories/Symbols
建立此密鑰之後,請編輯其 SymbolPath 為 \\symbols\symbols;https://msdl.microsoft.com/download/symbols。 這可以在註冊表編輯器的下列螢幕快照中看到。
在此範例中,SymProxy 會先搜尋 \\symbols\symbols 中的符號。 如果找不到檔案,則會使用Microsoft符號存放區。
在符合虛擬目錄名稱的 Web 目錄下的每個索引鍵中,必須建立稱為 SymbolPath 的REG_SZ。 值包含將用來填入 SymProxy 符號存放區的所有上游符號存放區。
最多支援10個項目。
以分號分隔條目。
UNC 路徑必須包含 「\\」 前置詞
HTTP 路徑必須包含 「https://」 前置詞
將值從最低成本排序為最昂貴。
您必須在計算中平衡使用量效能目標與伺服器和資料通訊成本。
一般而言,將本機 SMB/HTTP 伺服器放在因特網 HTTP 伺服器之前。
SymProxy 性能計數器
SymProxy 可以透過名為 SymProxy 的提供者發出性能計數器。
若要啟用性能計數器支援,請在系統管理員命令視窗中註冊 symproxy 指令清單檔案:
C:\> lodctr.exe /m:%WINDIR%\system32\inetsrv\symproxy.man
若要停用性能計數器支援,請取消註冊資訊清單:
C:\> unlodctr.exe /m:%WINDIR%\system32\inetsrv\symproxy.man
Windows 的 SymProxy 事件追蹤
SymProxy 可以透過名為 Microsoft-Windows-SymProxy 的提供者建立 ETW 事件。
C:\> logman query providers | findstr SymProxy
Microsoft-Windows-SymProxy {0876099C-A903-47FF-AF14-52035BB479EF}
若要啟用 ETW 支援,請註冊指令清單檔案:
C:\> wevtutil.exe install-manifest %WINDIR%\system32\inetsrv\symproxy.man
若要停用 ETW 支援,請取消註冊清單檔案:
C:\> wevtutil.exe uninstall-manifest %WINDIR%\system32\inetsrv\symproxy.man
事件記錄檔
如果已設定 ETW,這些事件會記錄在事件記錄檔的 Applications and Services Logs\Microsoft\Windows\SymProxy 下的 Operational and Analytic 通道中。
若要正確檢視事件記錄條目的訊息,必須將 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
SymProxy 事件
SymProxy 會記錄下列事件:
| 事件識別碼 | 說明 | 頻道 |
|---|---|---|
| 1 | ISAPI 篩選器的啟動 | 管理員 |
| 2 | ISAPI 篩選條件的停止 | 管理員 |
| 3 | ISAPI 篩選器的設定 | 管理員 |
| 4 | 遺漏快取統計數據 | 管理員 |
| 10 | URL 要求 - 本機快取點擊 | 運作中 |
| 11 | URL 要求 - 本機快取遺漏 | 運作中 |
| 20 | 透過 SymSrv 下載符號 | 運作中 |
| 30 | 遺漏重要符號 | 管理員 |
| 31 | 遺漏重要影像 | 管理員 |
| 40 | Symsrv – 找不到路徑 | 管理員 |
| 41 | Symsrv – 找不到檔案 | 管理員 |
| 42 | SymSrv – 拒絕存取 | 管理員 |
| 43 | SymSrv – 路徑太長 | 管理員 |
| 49 | SymSrv – 錯誤碼 | 管理員 |
| 90 | 鎖定爭用 | 運作中 |
| 100 | 一般重大訊息 | 分析性 |
| 101 | 一般錯誤訊息 | 分析 |
| 102 | 一般警告訊息 | 分析 |
| 103 | 一般資訊訊息 | 分析 |
| 104 | 一般分析訊息 | 分析 |
| 105 | 一般偵錯訊息 | 除錯 |
符號伺服器代理組態
SymProxy 會將其組態設定儲存在下列登錄機碼區域中:
HKLM/Software/Microsoft/Symbol Server Proxy
從這個位置,SymProxy 會取得其全域設定和上游符號存放區的符號路徑。
您可以透過合併您稍早所自訂的 symproxy.reg 檔案來建立此金鑰。
符號伺服器 Proxy 金鑰
符號伺服器代理登錄機碼支援下列全域設定(所有 REG_DWORD)。 藉由回收應用程式集區,即可即時套用設定。 將會建立新的 w3wp.exe 程式,並讀取新的值。 一旦對舊 w3wp.exe 程式的所有擱置要求都已完成,舊的 w3wp.exe 程式將會結束。 IIS 預設會每隔 1,740 分鐘(29 小時)回收 w3wp.exe 進程。
| REG_DWORD | 說明 |
| NoInternetProxy | 以服務身分執行時,SymSrv.dll 會使用 WinHTTP 而不是 WinInet 來提出 HTTP 要求。 因此,您可能需要設定 HTTP Proxy 設定,讓服務可以存取外部網路資源。 您可以使用 netsh 程式來執行此動作。 輸入 “netsh.exe winHTTP -?” 查看指示。 根據預設,SymProxy 會使用指定的 HTTP Proxy。 如果未設定 HTTP Proxy,SymProxy 會使用虛擬 Proxy。 這可讓您安全地存取內部網路內的 HTTP 網站。 副作用是,這可防止 SymProxy 直接連線到不安全的網站。
|
| NoFilePointers | 根據預設,針對不存在的符號,SymProxy 會尋找所要求檔案旁的 file.ptr 檔案(在本機快取中)。 如果找到,它會傳回 file.ptr 檔案所指定的位置。 只有在本機快取由 SymStore.exe填入時,才需要這種能力。
|
| NoUncompress | 根據預設,SymProxy 會在將檔案傳回給呼叫端之前解壓縮下載的符號。 這會減少用戶端的CPU,但會增加I/O。
|
| 不緩存 | 根據預設,SymProxy 會將下載的符號快取至虛擬目錄路徑所定義的本機文件系統。
|
| MissTimeout | 符號遺漏報告的逾時期限,以秒為單位,在此期間,遺漏的符號會被報告為遺漏,而不重新查詢上游符號伺服器。 遺漏與以UTC為基礎的時間相關聯。 後續對檔案的請求在 N 秒內會立即被拒絕。 N 秒後檔案的第一個要求會導致重新查詢上游符號存放區。 成功時,會傳回符號檔,並刪除遺漏。 失敗時,遺漏會向前移至目前時間 (UTC) 以開始新的逾時期間。 使用「遺漏快取」性能計數器來監視遺漏。
|
| MissAgeCheck | 年齡小姐檢查之間的期間。 系統會掃描遺漏快取,並移除超過MissAgeTimeout秒的記錄。 目前的統計數據會使用事件標識碼 4 儲存至事件記錄檔。
|
| MissAgeTimeout | 清除每個錯失快取項目的超時。 此項目已清除,因為在此期間內未收到任何要求。
|
| 不再索引的權威性 | 啟用時,NoLongerIndexed 的 file.ptr 回應會被視為對所有符號存放區具權威性。 使用此選項可避免不必要的對未編製檔案索引之伺服器的請求。
|
| RetryAppHang | 啟用重試至上游 HTTP 符號存放區。 這相當於 SymSrv SSRVOPT_RETRY_APP_HANG (0x80000000) 選項。 收到來自上游 HTTP 符號存放區「Symbol-Agent-Status」HTTP 回應標頭中的0x80070512/HRESULT_FROM_WIN32(ERROR_APP_HANG)錯誤碼時,將保持套接字開啟並進行「GET」操作,重複操作最多達 N 次。 SymProxy 會合併多個對相同 URI 的請求。 當任何擱置的要求達到 25 秒時,SymProxy 會透過 HTTP 回應標頭 'Symbol-Agent-Status' 將 0x80070512 傳回給呼叫者,但在背景中繼續作業。 用戶應該在 SymSrv 中啟用 SSRVOPT_RETRY_APP_HANG 選項,以支援特別長的請求,基本上是將重試操作鏈接到上游。 SymProxy 預設回應逾時為 25 秒,因此可以在 SymSrv 所使用的 HTTP 符號存放區預設的 30 秒逾時關閉連接之前發出回應。 較新版本的 SymSrv 會透過 'Symbol-Agent-Receive-Timeout' HTTP 要求標頭 (在 mSec 中) 傳送其設定的 HTTP 逾時值。 如果提供此 HTTP 要求標頭,則會使用此值,而不是 25 秒的預設值。
|
| Uri過濾器 | 啟用 URI 篩選。 這相當於 SymSrv SSRVOPT_URI_FILTER (0x20000000) 選項。 URI 篩選可減少所有 上游符號存放區 的各種要求。 這些值是位掩碼。 HTTP - SSRVURI_HTTP_MASK (0x0F)
UNC - SSRVURI_UNC_MASK (0xF0)
|
| UriTiers | 啟用 URI 層。 這相當於 SymSrv SSRVOPT_URI_TIERS (0x40000000) 選項。 URI 層會強制 所有上游符號存放區 所使用的階層架構。 如果未設定,則需要額外的要求來判斷架構。 根目錄中的 『index2.txt』 存在表示 2 層配置。 單層存儲的格式如下:/widget.dll/<索引>/widget.dll|widget.dl_|file.ptr 2 層儲存區的格式為:/wi/widget.dll/<索引>/widget.dll|widget.dl_|file.ptr
|
存取外部網路資源
當 SymSrv 與 SymProxy 搭配使用時,它會以服務的形式執行,並使用 WinHTTP API 透過 HTTP 連線存取符號。 這與針對此目的使用 WinInet 的一般行為不同。
因此,您可能需要設定 HTTP Proxy 設定,讓此服務可以存取外部網路資源。 使用下列其中一種方法來設定這些設定:
使用 Netsh 工具 (netsh.exe)。 如需指示,請在 [命令提示字元] 視窗中輸入下列命令:
netsh winhttp -?
SymProxy 的預設行為是使用 ProxyCfg 或 Netsh 所指定的任何 HTTP Proxy。 如果未設定 HTTP Proxy,SymProxy 會使用虛擬 Proxy 來允許存取內部網路內的安全 HTTP 網站。 由於副作用,這項技術可防止 SymProxy 使用與外部因特網的直接連線。 如果您希望允許 SymProxy 使用與網際網路的直接連接進行操作,請在登錄的 Symbol Server Proxy 機碼中,建立一個名為 NoInternetProxy 的 REG_DWORD 值。 將 NoInternetProxy 的值設定為 1,並確認 ProxyCfg 沒有指示HTTP代理。